Переименовать несколько файлов в DOS пакетный файл

Я хочу переименовать все файлы внутри папки *.формат txt, так что результат будет "1.txt", " 2.txt " и " 3.формат txt. ,"...

Как я могу это сделать?

3 ответов


следующий может выполнить то, что вы ищете. Он использует for цикл для итерации по текстовым файлам и делает "вызов" другому биту пакетного файла для переименования и увеличения переменной.

редактировать изменить математическую операцию на более чистое решение, предложенное Андреем.

@echo off
set i=1
for %%f in (*.txt) do call :renameit "%%f"
goto done

:renameit
ren %1 %i%.txt
set /A i+=1

:done

сначала сделайте список каталогов:

dir /b *.txt > myfile.cmd

затем запустите UltraEdit (http://www.ultraedit.com/) и откройте файл.

затем перейдите в режим столбца, выберите все строки и:

  • вставить "переименовать" в начале каждой строки
  • вставить ".TXT " в конце каждой строки (обязательно поместите ее достаточно далеко, если у вас очень длинные строки)
  • вставить число (см. столбец / вставить число в меню) только что. TXT

Я хочу переименовать все файлы внутри папки *.txt, поэтому результат будет " 1.txt", " 2.txt " и " 3.формат txt. ,"...

Как я могу это сделать?

::Setup the stage...
SETLOCAL ENABLEDELAYEDEXPANSION
SET folder=C:\This\Is\The\Folder
SET count=1

::Action
CD "%folder%"
FOR %%F IN ("*.txt") DO (
 MOVE "%%F" "!count!.txt"
 SET /a count=!count!+1
)
ENDLOCAL

сокращение

SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR %%F IN (C:\Path\To\File\*.txt) DO MOVE "%%~fF" "%%~dpF!count!.txt" & SET /a count=!count!+1
ENDLOCAL

Итак, если ваша папка содержала cat.тхт, собака.тхт, птица.txt, ninjaturtle.txt, он выведет 1.txt, 2.txt, 3.txt, 4.формат txt.