2011-06-12 19 views
1

我有一個大型的.cbr文件夾,並且我正在通過問題編號對它們進行重命名以正確排序它們。我需要在ren行中包含哪些內容才能讓每個文件通過windows命令提示符遞增文件名中的數字?我會經常這樣做,所以我會把它做成一個.bat文件。.bat用於批量重命名以增加fname中的數字

例如,其中n =初始數,且m =最終數量:n.cbr,第(n + 1).cbr,...,(M-1).cbr,m.cbr

的蝙蝠thusfar:

ren *.cbz *.cbr 
ren *.cbr <increment numbers n through m>.cbr 

另外,我該如何調整每個文件名,以便只有數字擴展之前離開? (從issue1.cbr到1.cbr)通過.bat或腳本宿主文件?

+0

你說你把它們重命名爲「......按問題編號......」腳本如何知道哪個文件應該有哪個編號?通過偷看到.cbr文件中的元數據?我認爲你不會純粹用批處理腳本來完成。 – 2011-06-12 13:58:01

+0

好的,如果我不打算每次改變.bat的話。首先,假設我每次想要指定一個新的範圍n到m時編輯.bat。如果你有一個建議,找到文件組中的最小數量和最大數量,然後設置爲n到m,讓我知道(會更好,但我從來沒有這樣做過) – werdnanoslen 2011-06-12 14:02:31

+0

@werdnanoslen:但即使在批處理中,您不能保證Windows將處理'* .cbr'通配符的順序,所以您將有效地在該範圍內提供文件的隨機名稱。 – 2011-06-12 14:03:44

回答

6

試試這個批處理腳本。

@echo off 
setlocal enabledelayedexpansion 
set /a count=0 
for /f "tokens=*" %%a in ('dir /b /od *.cbr') do (
echo ren "%%a" !count!.cbr 
set /a count+=1 
) 

它使用增量計數器重命名所有文件。這些文件的順序通過DIR命令的/OD選項保存,該命令按照修改的時間戳對文件列表進行排序。

經過認真測試,刪除ECHO命令。

欲瞭解更多信息,請閱讀HELP DIR,HELP SETHELP FOR

0
:: REN-sec.cmd ==> Rename files to increment numbers 
:: Inspired on -> http://stackoverflow.com/questions/6322329#6324312 
:: - (cX) 2017 [email protected] 
:: -> CAVEAT: Works on CURRENT directory! 
:: - Tested on Win10 64bits 
@echo off 

if (%1)==() goto _help 
if (%1)==(/?) goto _example 

setLOCAL EnableDelayedExpansion 
rem   EnableExtensions 
if (%1)==(/r) goto _recursive 
if (%1)==(/R) goto _recursive 
goto _current_dir 

:_recursive 
for /d %%A in (*.*) do (
     cd "%%~A" 
     call %~dpnx0 %1 %2 %3 %4 
     rem echo returning -^> call %~dpnx0 %1 %2 %3 %4 
     cd .. 
) 
shift 
goto _current_dir 

:_current_dir 
set /a _count=0 
for %%A in (%1) do (
    set /a _count+=1 

    rem Execute several times to rename 'crazy' left overs... 
    FOR /L %%C IN (1,1,2) DO (
     if exist "%~2!_count!%~3%%~xA" call :skip_count %1 %2 %3 %AA 
     if exist "%%~A" if not exist "%~2!_count!%~3%%~xA" ren "%%~A" "%~2!_count!%~3%%~xA" 
    ) 
    if exist "%%~A" echo EXISTS "%%~A" 
    REM if not exist "%~2!_count!%~3%%~xA" echo MISSING %~2!_count!%~3%%~xA 
) 
goto _out 

:skip_count 
    set /a _count+=1 
    if exist "%~2!_count!%~3%%~x4" goto skip_count 
goto _out 

:_example 
echo. 
echo %0 USAGE EXAMPLE 
echo. 
echo X:\Dir\SubDir\^> dir /b 
echo etc. 
echo La La La.mp3 
echo Le Le Le.mp3 
echo Lo Lo Lo.mp3 
echo Other.txt 
echo. 
echo X:\Dir\SubDir\^> %0 *.mp3 "" " - Su Fix" 
echo. 
echo X:\Dir\SubDir\^> dir /b 
echo etc. 
echo 1 - Su Fix.mp3 
echo 2 - Su Fix.mp3 
echo 3 - Su Fix.mp3 
echo Other.txt 
echo. 

:_help 
echo Rename files to increment numbers 
echo. 
echo CAVEAT: Works only in CURRENT directory! 
echo. 
echo %0 [/r] *.ext [prefix] [sufix] 
echo: /?   Help screen 
echo /r   Recurse in directories 
echo *.ext  Simple wildcard (like *.mp3) [NOT *.a.txt] 
echo prefix  Prefix to rename number 
echo sufix  sufix to rename number 
echo. 
echo When "" is used as prefix no prefix is put before the increment number 
echo. 
echo X:\Dir\SubDir\^> %0 [/r] [wildcard] [prefix] [sufix] 
goto _out 

:_out 
:: REN-sec.cmd ==> End of file 
+0

CAVEAT:適用於CURRENT目錄! – Adolfo 2017-05-20 17:50:15

+0

要更改文件擴展名,請使用http://stackoverflow.com/questions/17658354/#26438915 – Adolfo 2017-05-20 22:17:48

+0

錯誤:重命名結果將爲1 3 5 7 9.您應該刪除循環中的第一個「set/a _count + = 1」以防止增加兩次。 – Eric 2018-01-22 04:41:11