Пакетне перейменування файлів на номери з провідними нулями [дублікат]


2

Можливий повтор:
Як перейменувати купу файлів у командному рядку?

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

Я також слухаю багато аудіокниг. Я видобуваю їх з компакт-диска і завантажую їх із Audioble, тому отримую хороший довгий список файлів MP3. Більшість з них мають назви типу "Глава 3 - у порожнечу". Але мій стереосистема, який відтворюватиме MP3-файли на флеш-пам'яті USB, буде сортувати лише про перші чотири символи імені файлу. Список 39 MP3 з іменами файлів, які починаються з "Chapter", буде відтворюватися у випадковому порядку. Тому мені потрібно перейменувати ці файли на те, що починається, скажімо, з 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). Хтось знає, куди мені вказати, щоб знайти цей матеріал?

Дякую@


Дякую, я бачив кілька подібних речей (на цьому веб-сайті), але, здається, до цього додаються потрібні нулі. Тож стереосистема моєї вантажівки не буде грати 10.mp3 перед 3.mp3, наприклад :-)
Jeff Lanthripp

Так, я дуже добре знаю це питання. FYI, у мене є FM-передавач, який грає через SD-карту, але, прошивка не надто гаряча, і вона все ще не змушує її грати в порядку! Мені довелося фактично копіювати файли у правильному порядку, оскільки вони не відтворювалися в алфавітному порядку, а в даті створення!
Дейв

1
Це не дублікат зазначеного питання. Це загальне запитання про перейменування, і деякі відповіді стосуються додатків графічного інтерфейсу, тоді як це конкретно питання щодо пакетних файлів. Більше того, це питання спеціально задає питання про заміщення чисел у назви файлів нульовими нулями, які жоден з відповідей на цій сторінці не робить. Якщо це дублікат будь-чого, це кілька питань щодо ТА, а не про SU.
Synetech

Відповіді:


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

Жодне з цих рішень (ані якесь на зазначеній сторінці) не дає провідних нулів, яких конкретно вимагає це питання.
Synetech

@Synetech, я трохи загубився, ти кажеш, що не можна додавати провідні 0 під час перейменування файлів?
Дейв

2
Так, саме. Це запитання стосується автоматичного додавання чисел за необхідності у назви файлів провідними нулями. Відповіді, на які ви посилалися, цього не роблять, як і ваші зразки сценаріїв. Ви повністю пропустили точку з питання.
Synetech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.