我正在撰寫一個腳本,將大量檔案夾從源路徑移動到目標路徑。問題是不是每個檔案夾都應該進入同一個目錄。所以我有一個帶有檔案夾名稱串列的 .txt 檔案,并根據 .txt 檔案將它們移動到適當的目的地。
這里的問題是,當檔案夾的名稱具有特殊字符(如 [á、à、?、a、?、? 等)時,它會崩潰并說包含這些字符的檔案夾不存在
我正在構建路徑并使用以下代碼移動它們:
foreach ($folderName in $file_list)
{
try{
if( $folderName.StartsWith("#")){
$pastaMae = $folderName.substring(1)
Write-Host "A criar pasta '$pastaMae'"
New-Item -Path $Destination -Name $pastaMae -ItemType "directory" -ErrorAction Stop | Out-Null
$newDestination = $Destination $pastaMae "\"
Write-Host "Pasta Mae: $newDestination"
}else {
Write-Host "A mover a pasta: $folderName"
Move-Item -Path [System.IO.DirectoryInfo]$Path$folderName -Destination $newDestination -ErrorAction Stop
Write-Host "Pasta movida com sucesso!!" -ForegroundColor Green
}
}catch {
Write-Host "Ocorreu um erro ao mover a pasta '$folderName'" -ForegroundColor Red
$erro = 1
$msgErro = " $folderName ||"
}
}
這是終端中顯示的內容。(這些檔案夾名為“A??o Social”和“Educa??o”)

有沒有辦法解決這個問題?
uj5u.com熱心網友回復:
您的輸出表明您從中讀取檔案夾路徑的文本檔案是沒有 BOM的 UTF-8 檔案,Windows PowerShell假定它是 ANSI 編碼的,從而導致字串解碼錯誤。
(幸運的是, PowerShell (Core) 7 現在始終默認為 (BOM-less) UTF-8)。
為避免此問題,請將您的檔案顯式讀取為 UTF-8 檔案;例如:
Get-Content -Encoding utf8 -LiteralPath folder_list.txt
有關兩個 PowerShell 版本中的默認字符編碼的更多資訊,請參閱此答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/496660.html
上一篇:Powershell-無法解鎖BitLocker,因為256個字符的長密碼包含帶有單雙引號的特殊字符
下一篇:Powershell-屬性不出現
