在下面的半伪代码中,数组$system
中第一个元素的正斜杠始终被读作反斜杠。
我尝试过各种各样的转义字符,例如`和\但无济于事。这是PowerShell中的已知问题吗?怎么解决?
$system = @("Something/Anything", "Super Development","Quality Assurance")
//the following is looped with $y
$string| ConvertTo-json | FT | Out-File -append C:\Test\Results\$($system[$y])_All.csv
//error:
Message : Could not find a part of the path 'C:\Test\Results\Something\Anything_All.csv'
答案 0 :(得分:2)
正如您在问题的评论中提到的@autosvet,有几个reserved characters无法在Windows上的文件名/路径中使用,即:
使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:
以下保留字符:
<
(小于)>
(大于):
(冒号)"
(双引号)/
(正斜杠)\
(反斜杠)|
(垂直条或竖线)?
(问号)*
(星号)
这些字符无法转义,只能被替换。您可以使用GetInvalidFileNameChars()
方法以编程方式确定需要替换的字符:
$invalid = [regex]::Escape([IO.Path]::GetInvalidFileNameChars())
$string | ConvertTo-json | FT |
Out-File -Append C:\Test\Results\$($something[$y] -replace $invalid, '_')_All.csv