使用 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 将常规双引号和 视为可互换的,这就是为什么您仍然需要在常规双引号字符串中 `-转义 的原因。