Изменить имена файлов с помощью .bat - PullRequest
0 голосов
/ 09 мая 2019

Привет, ребята, я новичок в пакете и у меня вопрос .bat для переименования файлов.

Я посмотрел на следующее решение и попытался перенести это на мою проблему: Переименование имен файлов с помощью BAT-файла

Итак, мой .bat выглядит так:

setlocal enabledelayedexpansion
set /a count=1
set padded_count=000!count!
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    ren "%%a" !padded_count!.txt
    set /a count+=1
)

И у меня есть файл со случайными именами для данных .txt. Э.Г.

abc.txt
def.txt
123.txt
456.txt

И я хочу изменить это на:

0001.txt
0002.txt
...

Но когда я использую свой .bat, это только первый .txt, который меняет свое имя. Можете ли вы объяснить мне, почему? И что я должен сделать, чтобы получить все это.

Или возможно решить эту проблему с помощью REN в cmd с помощью чего-то вроде "ren * .txt ___"

Ответы [ 2 ]

2 голосов
/ 09 мая 2019
setlocal enabledelayedexpansion
set /a count=10001
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    ren "%%a" !count:-4!.txt
    set /a count+=1
)

, где !count:-4! выбирает последние 4 символа count.

1 голос
/ 09 мая 2019

После вашего комментария к требованию, это похоже на ответ @ Magoo, но я не ограничиваю его четырьмя символами.

@echo off
setlocal enabledelayedexpansion
set count=10000
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    if "!count:~1!" == "9999" set count=100000
    set /a count+=1
    echo ren "%%a" !count:~1!.txt
)

В этом случае, как только мы доберемся до 9999, мы установим новую переменную count, чтобы в файлах продолжалась дополнительная цифра.

ren "file9999.txt" 9999.txt
ren "file10000.txt" 00001.txt
ren "file10001.txt" 00002.txt
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...