如何在 PowerShell 中使用国际字符重命名目录?

如何在 PowerShell 中使用国际字符重命名目录?

我有一个 PowerShell 脚本,它除了其他功能外,还重命名文件系统上的目录。我尝试重命名的某些目录的名称中包含非英文字符,脚本执行完成后,这些文件夹的名称会变成乱码。我编写了一个示例脚本来说明这个问题。

$NewDir = New-Item -Path "c:\" -Name "New Directory" -ItemType "directory"

Write-Host "Created Directory - " $NewDir.FullName

$RenamedDir = Rename-Item -Path "c:\New Directory" -NewName "Yeni Direktör" -PassThru

Write-Host "Renamed Directory - " $RenamedDir.FullName

我正在通过 Windows 批处理文件使用以下命令启动该脚本:

powershell.exe -executionpolicy remotesigned -file "PowerShellInternationalRenameExample.ps1"

脚本执行完成后,新重命名的目录名称不再是“Yeni Direktör”(土耳其语中“新目录”的意思),而是“Yeni Direktör”。如何重命名目录才能避免出现乱码?

编辑-根据 Notepad++,脚本文件本身采用 UTF-8 编码

答案1

如果没有 字节顺序标记 (BOM)

例如,将脚本通过 Notepad++ 并在编码菜单中指定“以 UTF-8-BOM 编码”应该可以修复该文件。最好检查 BOM 字节是否确实添加到文件开头。

答案2

尝试这个:

$NewDir = New-Item -Path "c:\" -Name "New Directory" -ItemType "directory"
Write-Host "Created Directory - " $NewDir.FullName
$RenamedDir = Rename-Item -Path "c:\New Directory" -NewName "Yeni Direkt`ör" -PassThru
Write-Host "Renamed Directory - " $RenamedDir.FullName

转义特殊字符

相关内容