我希望用批处理文件重命名目录中的一堆文件。我想这样做:
file_XX_img.tiff到file_32_img.tiff
我有这段代码
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set fName=%1
if '%1' equ '' set /p fName=Enter file name:
for /f "delims==" %%F in ('dir /b *.aaa') do ren "%%~nxF" "%%~nF"
pause
重命名扩展程序,但我想转换它,所以我可以用数字替换XX。如何修改它以适应这种情况?
---------------------------------- EDIT ------------ ---------------------------------
想通了:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set fName=%1
set /p vers=Enter Vers:
for /f "delims==" %%F in ('dir /b file_XX*.*') do ren "%%~nxF" "file_%vers%*.*"
pause
答案 0 :(得分:2)
您的解决方案存在一些问题。
%1
参数存储在fname
变量中,但实际上从未使用过。
重命名这样的文件只能按预期的vers
的2位数值工作。如果是1位数,则结果如file_3X_img.tif
。如果它超过2位数,你会有这样的东西(4位数):file_3210mg.tif
。
我猜你的解决方案可能仍然适合你一段时间(也许,直到你达到100)。不过,您可能需要考虑以下替代方案:
@ECHO OFF
SET "vers=%~1"
IF "%vers%" == "" SET /P "vers=Enter Vers: "
FOR %%F IN (file_XX_*.*) DO CALL :process "%%F"
GOTO :EOF
:process
SET "name=%~nx1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET "name=!name:_XX_=_%vers%_!"
RENAME %1 "%name%"
ENDLOCAL