2016-08-24 131 views
0

在下面的半僞代碼中,數組$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' 
+3

在Windows中,你不能在文件命名「/」使用! – autosvet

+0

'$東西[$ Y]'似乎並沒有解決我 '$東西= '測試 - ' 的foreach($ Y $中的系統){$ 東西[$ Y] }' –

+0

@HiteshDhruna什麼對不起,錯字。固定 – rafvasq

回答

2

正如在評論你的問題已經提到@autosvet有幾個reserved characters無法在Windows文件名/路徑,即使用:

  • 使用的任何字符當前代碼頁的名稱包括Unicode字符和擴展字符集中的字符(128-255),但以下情況除外:

    以下保留字符:

    • <(小於)
    • >(大於)
    • :(結腸)
    • "(雙引號)
    • /(正斜槓)
    • \(反斜槓)
    • |(垂直條或pi PE)
    • ?(問號)
    • *(星號)

這些字符無法逃脫,只能更換。您可以使用GetInvalidFileNameChars()方法程序確定需要更換的人物:

$invalid = [regex]::Escape([IO.Path]::GetInvalidFileNameChars()) 
$string | ConvertTo-json | FT | 
    Out-File -Append C:\Test\Results\$($something[$y] -replace $invalid, '_')_All.csv 
+0

感謝您對我刪除的問題Ansgar的提示。我沒有注意到這些都是CSV的所有名稱... –