.bat for batch rename to increment numbers in fname

前端 未结 2 667
心在旅途
心在旅途 2021-01-06 16:33

I have a large folder of .cbr\'s, and I\'m renaming them by issue number to correctly order them. What do I need to include in the ren line to have each file increment the n

相关标签:
2条回答
  • 2021-01-06 17:25

    Try this batch script.

    @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
    )
    

    It renames all the files with a incremental counter. The order of the files is preserved with the /OD option of the DIR command, that sorts the files list by its modified timestamp.

    After careful testing, remove the ECHO command.

    For more information, read HELP DIR, HELP SET and HELP FOR.

    0 讨论(0)
  • 2021-01-06 17:31
    :: REN-sec.cmd ==> Rename files to increment numbers
    :: Inspired on -> http://stackoverflow.com/questions/6322329#6324312
    :: - (cX) 2017 adolfo.dimare@gmail.com
    :: -> 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 讨论(0)
提交回复
热议问题