我正在嘗試修改一個檔案夾中一組檔案的內容并將修改后的檔案寫入另一個檔案夾。修改位很容易并且效果很好,但是設定新內容失敗。這是代碼:
$files = Get-ChildItem "~\Desktop\Test1\*.txt"
foreach ($f in $files)
{
Get-Content "$f" |
Where-Object { -not $_.Contains('VOID') } |
Set-Content "~\Desktop\Test2\$f"
}
運行時出現的錯誤是:Set-Content:無法打開檔案“\Users\Laptop\Desktop\Test2\C”的備用資料流“\Users\Laptop\Desktop\Test1\test.txt”。
“Test2\C”是什么意思?C在哪里出現?
這一定是一個非常容易解決的問題,但我可以使用一些幫助。
uj5u.com熱心網友回復:
為確保您只使用每個輸入檔案的檔案名,請替換
"~\Desktop\Test2\$f"
和
"~\Desktop\Test2\$($f.Name)"
如果您$f 作為一個整體進行字串化( "$f"),則在它所代表.ToString()的實體上呼叫該方法,該方法回傳完整路徑(通常在 Windows PowerShell 中,始終在 PowerShell (Core) 7 中),因此您最終會得到一個格式錯誤的路徑例如- 也就是說,您實際上是將完整路徑附加到另一個完整路徑。System.IO.FileInfoC:\User\jdoe\Desktop\Test2\C:\User\jdoe\Desktop\Test1\foo.txt
至于你嘗試了什么:
“Test2\C”是什么意思?C在哪里出現?
C是字串化為的完整路徑的驅動器號(例如, )$fC:\User\jdoe\Desktop\Test1\foo.txt
路徑的其余部分丟失的原因是(意外)第二個 :(第一個來自擴展形式的驅動器號)之后的所有內容都~\Desktop\Test1\*.txt被解釋為備用 NTFS 資料流(ADS)的識別符號。
該錯誤是由于(意外)識別符號包含無效字符(即\.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523429.html
標籤:电源外壳
