.bat для пакетного переименования в инкрементные числа в fname - PullRequest
2 голосов
/ 12 июня 2011

У меня есть большая папка .cbr's, и я переименовываю их по номеру выпуска, чтобы правильно их упорядочить. Что мне нужно включить в строку ren, чтобы каждый файл увеличивал число в имени файла через командную строку Windows? Я буду делать это часто, поэтому я сделаю этот файл .bat.

Например, где n = начальное число и m = конечное число: n.cbr, (n + 1) .cbr, ..., (m-1) .cbr, m.cbr

.bat Таким образом:

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

В качестве альтернативы, как мне обрезать каждое имя файла, чтобы перед расширением оставались только цифры? (из вопроса1.cbr в 1.cbr) через .bat или файл хоста скрипта?

Ответы [ 2 ]

9 голосов
/ 13 июня 2011

Попробуйте этот пакетный скрипт.

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

Переименовывает все файлы с добавочным счетчиком. Порядок файлов сохраняется с помощью опции /OD команды DIR, которая сортирует список файлов по его измененной отметке времени.

После тщательного тестирования удалите команду ECHO.

Для получения дополнительной информации прочитайте HELP DIR, HELP SET и HELP FOR.

0 голосов
/ 20 мая 2017
:: 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...