2011-07-20 204 views
0

我正在使用批處理文件重命名一個目錄中的一堆文件。我想這樣做:批處理文件替換/重命名

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數。我如何修改它以適應這種情況?

----------------------------------編輯----------- ----------------------------------

想通了:

@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. %1參數被存儲到變量fname,但從未實際使用。

  2. 重命名這樣的文件只能按照預期的那樣對vers的2位數值起作用。如果它是1位數,結果就像file_3X_img.tif。如果它超過兩位數字,你會有這樣的(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