![删除文件夹名中的中文字符](https://linux22.com/image/1335730/%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E5%90%8D%E4%B8%AD%E7%9A%84%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6.png)
我正在运行 Windows Server 2003,我需要找到一种方法来批量重命名包含中文字符的文件夹。基本上我想删除中文字符,但如果我删除它,文件夹名称将没有名称,所以我需要用一些随机的 5 位字母/数字替换它。
有什么解决办法吗?
答案1
你可以试试肯·雷纳姆。
我首先更改设置,将所有非法字符替换为下划线:
接下来我选择了更改代码页文件名来自统一码到Windows-1252这会将中文字符替换为问号,因为问号是通配符,因此在 Windows 中是非法的文件名字符,因此又被替换为下划线:
如果这还不够,而您又确实需要它,那么也许有一种方法可以用随机数字替换字符,但我没有检查。
答案2
您可以使用 PowerShell:
Get-ChildItem -Recurse |
ForEach-Object {
$n = $_.BaseName -replace '[\p{IsCJKUnifiedIdeographs}]'
while ($n -match '^\s*$' -or (Test-Path (Join-Path (Split-Path -Parent $_.FullName) $n)) {
$n = -join(0..5|%{[char[]](65..90+97..122+48..57)|Get-Random})
}
Rename-Item $_.FullName ($n + $_.Extension)
}
这将从文件名中删除所有 CJK 表意文字(如果需要,您可能需要使用其他块稍微扩展字符类),并且如果之后文件名为空或与现有名称冲突,则会生成一个随机的字母数字名称。