我需要在文件夹C:\projects
中创建子目录。我正在使用get-content -Raw读取输入文件,将文件转换为字符串,然后在换行符处拆分字符串。但是当我将字符串传递给New-Item时,它会说“路径中的非法字符”。我甚至使用trim()修剪空格或换行字符,但我得到了同样的错误。
$inputTxt = Get-Content "c:\input.txt" -Raw
[string[]]$input = $inputTxt.split("`n")
$combinePath = "c:\projects"+ "\" + $input[$i]
New-Item $combinePath -type directory
或者,我只是使用get-content直接将输入文件读入数组但没有-Raw参数,该参数在换行符上拆分,但是当文件中只有1个输入时会出现问题,然后根据它分割字符串字符而不是换行符。
答案 0 :(得分:0)
您无需使用-Raw
。 Get-Content
的默认行为是为您提供一系列行。您只需要使用非法路径字符过滤空行和行:例如:
$inputTxt = Get-Content C:\input.txt | Where {$_.Trim().Length -gt 0}
$inputTxt -replace '[<>|"]','' | Foreach {New-Item (Join-Path c:\projects $_) -type directory}
这不是无效字符的完整列表,但应该让你朝着正确的方向前进。