1

Возможный дубликат:
Как переименовать кучу файлов в командной строке?

Я возвращаюсь в Windows через несколько лет в Linux (я дальнобойщик, и у компании, которой я только что арендовал свой грузовик, есть функции на их плате загрузки, которые работают только в IE и только с включенным режимом совместимости),

Я также слушаю много аудиокниг. Я копирую их с компакт-диска и загружаю их с Audible, так что я получаю хороший длинный список файлов MP3. У большинства из них есть названия типа «Глава 3 - В пустоту». Но моя стереосистема, которая будет воспроизводить MP3-файлы на USB-накопителе, будет сортировать только первые четыре символа имени файла. Список из 39 файлов MP3 с именами файлов, которые начинаются с "Главы", будет воспроизводиться в случайном порядке. Поэтому мне нужно переименовать эти файлы во что-то, начинающееся, скажем, с 2 или 3 цифры.

В Linux я сделал это в скрипте bash, чтобы выполнить это:

#!/bin/bash
i=1
for file in *.mp3
do
        j=$( printf "%03" "$i" )
        mv "$file" "$j.mp3"
        (( i++ ))
done

Это даст мне каталог файлов с именами 00l.mp3, 002.mp3, 003.mp3 и так далее. Но не знаю, как это сделать в Windows.

Я смутно помню, что смог что-то сделать с помощью командных файлов в Windows, но синтаксис у всех разный, а доступные инструменты для вызова разные (к сожалению, в Windows нет sed или awk). Кто-нибудь знает, где указать мне, чтобы найти этот материал?

Спасибо@

1 ответ1

1

Ваш ответ существует в теле Как мне переименовать кучу файлов в командной строке?

Хотя это для командной строки, есть примеры пакетных сценариев, которые я включил ниже

@echo off
setlocal EnableDelayedExpansion
set i=0
for %%a in (*.jpg) do (
    set /a i+=1
    ren %%a !i!.new
)
ren *.new *.jpg

Другой пример

@echo off
SET COUNT=1
SET PREFIX=Photos
FOR /f "tokens=*" %%G IN ('dir /b *.jpg') DO (call :renum "%%G")
GOTO :eof

:renum
 ren %1 %PREFIX%_%count%.jpg
 set /a count+=1
 GOTO :eof

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .