我在另一个线程中收到了一个很好的建议,支持从目录结构中的文件名中删除/替换特定字符。按预期工作的常见ascii字符(如&
)。
PowerShell(适用于从文件名中删除&
个字符):
powershell.exe -c "Get-ChildItem 'c:\Media\Downloads' -Filter '*&*' -Recurse | Rename-Item -NewName {$_.name -replace '&','' }"
我还需要从某些文件中删除单引号:示例:mark's_file.txt
。
我尝试了一些不成功的变种。我想我遇到了一个标点符号问题我无法解决。我也尝试使用变量= char(39)并添加到字符串中。没有运气。
要完成的任何想法?
注意:想要一个自包含的批处理文件方法,而不是调用外部的.ps1文件。
答案 0 :(得分:3)
批处理文件也可以从文件名中删除&
和'
字符:
@echo off
setlocal EnableDelayedExpansion
rem Remove "&" characters:
for /R "c:\Media\Downloads" %%a in ("*&*") do (
set "fileName=%%~NXa"
ren "%%a" "!filename:&=!"
)
rem Remove "'" characters:
for /R "c:\Media\Downloads" %%a in ("*'*") do (
set "fileName=%%~NXa"
ren "%%a" "!filename:'=!"
)
...但批处理文件开始比PS更快运行!