使用 powershell 将双引号写入文件名文本
writing double quotes to file name text with powershell
我煞费苦心地想看看我在为文件名文本添加双引号时哪里出了问题。以下代码在 -whatif 保护伞下工作正常,但在没有保护伞的情况下也能正常工作。
$a = "20`" board"
get-childitem | rename-item -newname {$_.fullname -replace "20 board", $a } -whatif
get-childitem | rename-item -newname {$_.fullname -replace "20 board","20`" board" } -whatif
期望的结果是将 20 board
替换为 20" board
。
上面的代码片段给我一个 rename-item : Illegal characters in path.
错误。
在 Windows 中,您不能在文件或文件夹名称中使用某些字符;
双引号就是其中之一。
在 https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file 阅读更多内容。
该页面的摘录:
The following reserved characters [are not allowed]:
< (less than)
(greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
包含关键指针:"
字符不能用于 Windows.
上的文件和文件夹名称
有一个 - 次优 - 近似值 所需的功能:您可以使用 非 ASCII 双引号,这视觉上相似 - 但请注意,稍后您需要使用那个确切的引号来引用该文件(除非您使用通配符来匹配它),因此视觉上的相似性可以导致混乱。
'hi' > "20`“ board" # works, because “ is not a regular double quote
“
是 Unicode character U+201C
, the LEFT DOUBLE QUOTATION MARK.
请注意,PowerShell 将常规双引号和 “
视为可互换的,这就是为什么您仍然需要在常规双引号字符串中 `
-转义 “
的原因。
我煞费苦心地想看看我在为文件名文本添加双引号时哪里出了问题。以下代码在 -whatif 保护伞下工作正常,但在没有保护伞的情况下也能正常工作。
$a = "20`" board"
get-childitem | rename-item -newname {$_.fullname -replace "20 board", $a } -whatif
get-childitem | rename-item -newname {$_.fullname -replace "20 board","20`" board" } -whatif
期望的结果是将 20 board
替换为 20" board
。
上面的代码片段给我一个 rename-item : Illegal characters in path.
错误。
在 Windows 中,您不能在文件或文件夹名称中使用某些字符; 双引号就是其中之一。
在 https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file 阅读更多内容。
该页面的摘录:
The following reserved characters [are not allowed]:
< (less than)
(greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
"
字符不能用于 Windows.
有一个 - 次优 - 近似值 所需的功能:您可以使用 非 ASCII 双引号,这视觉上相似 - 但请注意,稍后您需要使用那个确切的引号来引用该文件(除非您使用通配符来匹配它),因此视觉上的相似性可以导致混乱。
'hi' > "20`“ board" # works, because “ is not a regular double quote
“
是 Unicode character U+201C
, the LEFT DOUBLE QUOTATION MARK.
请注意,PowerShell 将常规双引号和 “
视为可互换的,这就是为什么您仍然需要在常规双引号字符串中 `
-转义 “
的原因。