我想在文件路径中搜索特定字符串并将该字符串加倍。
示例:如果我的文件路径是C:\Users\XXXX\Desktop\g%h.txt
我想搜索并获取%
符号,我需要将其加倍C:\Users\XXXX\Desktop\g%%h.txt
如何使用批处理文件执行此操作?
答案 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)
以下示例匹配包含一个或多个%
@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!"
)
)