it-swarm-ja.com

ファイルの名前を先頭にゼロが付いた番号に一括変更

重複の可能性:
コマンドプロンプトで一連のファイルの名前を変更するにはどうすればよいですか?

Linuxで数年後にWindowsに戻ってきました(私はトラック運転手で、トラックをリースしたばかりの会社で、ロードボードサイトにIEでのみ機能し、互換モードのみがオンになっている機能があります) 。

オーディオブックもたくさん聴いています。 CDからリッピングしてAudibleからダウンロードするので、MP3ファイルの長いリストが表示されます。それらのほとんどは「第3章-虚空へ」のような名前を持っています。しかし、USBフラッシュドライブでMP3ファイルを再生する私のトラックステレオは、ファイル名の最初の4文字程度しかソートしません。ファイル名がすべて「Chapter」で始まる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はありません)。誰かが私にこのようなものを見つけるためにどこを指し示すべきか知っていますか?

ありがとう@

2
Jeff Lanthripp

あなたの答えは コマンドプロンプトでファイルの名前を変更するにはどうすればよいですか? の本文内に存在します

これはコマンドプロンプト用ですが、バッチスクリプトの例があります。これを以下に示します。

@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
1
Dave