1

数百のフォルダーを含むディレクトリがあります。各フォルダーには、*.iso ファイルと「Disc Art」という名前のフォルダーがあります。Disc Art フォルダー内には、通常 1.btw または 01.btw という名前の *.btw ファイルがあります。親フォルダーの .btw のファイル名を *.iso のファイル名に変更し、「- Disc 01」を追加できるようにしたいと考えています。したがって、「Windflyers.iso」がある場合、「Windflyers - Disc 01.btw」になります。

これが私がこれまでに試したことです。私はとても近いと思います。次の行で変数を呼び出してファイルの名前を変更すると、値がないため、何らかの理由で SET コマンドが失敗しているように感じます。

for /D %%f in (*.*) do (    
cd "%%f"
for /F %%a in ('dir /b *.iso') do set variable=%%~na
rename "Disc Art\*.btw" "%variable% - Disc 01.btw"
cd..
)

誰かが私の仕事で提案したように、私もこれを試しました。

setlocal enabledelayedexpansion
for /D %%f in (*.*) do (    
cd "%%f"
for /F %%a in ('dir /b *.iso') do set variable=%%~na
rename "Disc Art\*.btw" "%variable% - Disc 01.btw"
cd..
) >> log.txt
endlocal

以下のソリューション
に若干の変更を加えました。dbenham による解決策は機能しましたが、.iso のファイル名にスペースが含まれていると、最初の単語しか表示されませんでした。以下の .bat コードを使用して、完全なファイル名を取得できました。

for /D %%f in (*.*) do (    
cd "%%f"
for /F "tokens=*" %%* in ('dir /b *.iso') do rename "Disc Art\*.btw" "%%~n* - Disc 01.btw"
cd..
) >> log.txt
4

1 に答える 1