替换文件名中的单引号(')

时间:2015-11-19 19:38:33

标签: powershell batch-file

我在另一个线程中收到了一个很好的建议,支持从目录结构中的文件名中删除/替换特定字符。按预期工作的常见ascii字符(如&)。

PowerShell(适用于从文件名中删除&个字符):

powershell.exe -c "Get-ChildItem 'c:\Media\Downloads' -Filter '*&*' -Recurse | Rename-Item -NewName {$_.name -replace '&','' }"

我还需要从某些文件中删除单引号:示例:mark's_file.txt

我尝试了一些不成功的变种。我想我遇到了一个标点符号问题我无法解决。我也尝试使用变量= char(39)并添加到字符串中。没有运气。

要完成的任何想法?

注意:想要一个自包含的批处理文件方法,而不是调用外部的.ps1文件。

1 个答案:

答案 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更快运行