用于搜索文件路径中的字符串的批处理文件

时间:2015-09-21 09:05:26

标签: windows batch-file

我想在文件路径中搜索特定字符串并将该字符串加倍。

示例:如果我的文件路径是C:\Users\XXXX\Desktop\g%h.txt 我想搜索并获取%符号,我需要将其加倍C:\Users\XXXX\Desktop\g%%h.txt

如何使用批处理文件执行此操作?

3 个答案:

答案 0 :(得分:0)

在批处理文件中,你必须逃避一些特殊的字符,所以cmd知道不要将它们视为"特殊"。百分号将使用另一个百分号进行转义:

@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
  set name=%%i
  echo old name: !name!
  set name=!name:%%=%%%%!
  echo new name: !name!
)

答案 1 :(得分:0)

以下示例匹配包含一个或多个%

的任何txt
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d *.txt ^|findstr /i "%%"') do ( set file=%%i
  rem Here to remove every % in the name.
  echo ren "!file!" "!file:%%=!"
)
exit /b 0

答案 2 :(得分:0)

在上面提到的批处理文件中,您必须使用另一个%符号转义%符号,文件名也不例外。因此,您必须使用set file=C:\Users\XXX\Desktop\r%h.txt而不是set file=C:\Users\XXX\Desktop\r%%h.txt

我写了一个单独的批处理文件,它接受两个参数:第一个是命名模式,第二个是需要加倍的符号。因此,例如,如果要在您键入的当前目录中的所有.txt文件中加倍字符“r” 命令行中<nameOfTheBatchFile> *.txt r。或者在你的情况下,你可以去 <nameOfTheBatchFile> C:\Users\XXX\Desktop\r%h.txt %

@echo off
setlocal enabledelayedexpansion
set "namingPattern=%1"
set "charToDouble=%2"
for %%i in (%namingPattern%) do (
    set "curName=%%i"
    set newName=!curName:%charToDouble%=%charToDouble%%charToDouble%!
    if "!curName!" neq "!newName!" (
        echo Renaming !curName! -^> !newName!
        ren "!curName!" "!newName!"
    )
)