Batch file .bat用于批量重命名为fname中的增量编号

Batch file .bat用于批量重命名为fname中的增量编号,batch-file,command-prompt,wsh,batch-rename,Batch File,Command Prompt,Wsh,Batch Rename,我有一个很大的.cbr文件夹,我正在按发行号对它们进行重命名,以便正确订购。我需要在ren行中包含哪些内容,以便通过windows命令提示符使每个文件在文件名中增加数字?我会经常这样做,所以我会把它变成一个.bat文件 例如,其中n=初始编号,m=最终编号:n.cbr,(n+1).cbr,…(m-1).cbr,m.cbr bat thusfar: ren *.cbz *.cbr ren *.cbr <increment numbers n through m>.cbr ren*.c

我有一个很大的.cbr文件夹,我正在按发行号对它们进行重命名,以便正确订购。我需要在ren行中包含哪些内容,以便通过windows命令提示符使每个文件在文件名中增加数字?我会经常这样做,所以我会把它变成一个.bat文件

例如,其中n=初始编号,m=最终编号:n.cbr,(n+1).cbr,…(m-1).cbr,m.cbr

bat thusfar:

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

或者,如何修剪每个文件名,以便在扩展名之前只保留数字?(从issue1.cbr到1.cbr)通过.bat或脚本主机文件?

尝试此批处理脚本

@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
命令


有关详细信息,请阅读
帮助目录
帮助设置
帮助

您说您正在重命名它们“…按发行编号…”脚本如何知道哪个文件应该有哪个编号?通过查看.cbr文件中的元数据?我不认为你会单纯地用批处理脚本来做这件事。啊,如果我不打算每次都改变.bat,那就好了。首先,假设每次我想要指定一个新的范围n到m时,我都会编辑.bat。如果您建议在文件组中查找最小数和最大数,然后将其设置为n到m,请让我知道(这会更好,但我从来没有这样做过)@werdnanoslen:但即使在批处理中,您也无法保证Windows处理
*.cbr
通配符的顺序,所以你会在范围内给文件随机命名。真的吗?我不知道。好的,我在原始问题的末尾加了一点,如果文件名中没有其他数字,这应该是一个不错的解决办法。还有,我只是好奇,计算机喜欢如何排序它的操作?批量订单通常是如何下降的?警告:在当前目录下工作!要更改文件扩展名,请使用Bug:重命名结果将为1 3 5 7 9。您应该删除循环中的第一个
set/a\u count+=1
,以防止两次递增。同时,您可能需要将\u count的初始值修改为1,即
set/a\u count=1
:: 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