フォルダ構造が以下のようになっているのですが、
ファイル名を「一つ上のフォルダ名のアンダーバー以前の数字」に一括で変更したいです。
:現在 Downloads │ │─220210213_001 │ └─20210213 │ ├─000000-000_XXXXXX │ │ AAA.pdf │ │ │ ├─111111-111_YYYYYY │ │ BBB.pdf │ │ │ └─222222-222_ZZZZZZ │ CCC.pdf │ ├─20210213_002 │ └─20210213 │ ├─000000-000_XXXXXXX │ │ DDD.pdf │ │ │ ├─111111-111_YYYYYYY │ │ EEE.pdf │ │ │ └─222222-222_ZZZZZZZ │ FFF.pdf │ └─20210213_003 └─20210213 ├─1-000000-000_XXXXXXX │ GGG.pdf │ ├─2-111111-111_YYYYYYYY │ HHH.pdf │ └─3-222222-222_ZZZZZZZZ III.pdf
:処理結果 Downloads │ │─220210213_001 │ └─20210213 │ ├─000000-000_XXXXXX │ │ 000000-000.pdf │ │ │ ├─111111-111_YYYYYY │ │ 111111-111.pdf │ │ │ └─222222-222_ZZZZZZ │ 222222-222.pdf │ ├─20210213_002 │ └─20210213 │ ├─000000-000_XXXXXXX │ │ 000000-000.pdf │ │ │ ├─111111-111_YYYYYYY │ │ 111111-111.pdf │ │ │ └─222222-222_ZZZZZZZ │ 222222-222.pdf │ └─20210213_003 └─20210213 ├─1-000000-000_XXXXXXX │ 1-000000-000.pdf │ ├─2-111111-111_YYYYYYYY │ 2-111111-111.pdf │ └─3-222222-222_ZZZZZZZZ 3-222222-222.pdf
調べて近いコードを拾ったのですが、こちらのコードではフォルダ名がそのままファイル名として付けられる上に、フォルダ1つ1つバッチに送る必要があるので一括処理したいです。
echo off :--------------------------------------------------- sample.bat if "%~1"=="" goto usage dir /a:d "%~1">NUL 2>&1 if %errorlevel% EQU 0 goto top : ファイルを指定した場合 pushd "%~dp1" "%~f0" "%CD%" :パスとフォルダ名を取得 :top set pname=%~f1 set name=%~nx1 for /f "delims=" %%f in ('dir /b "%pname%"') do ren "%pname%\%%f" "%name%_%%f" goto :EOF :usage echo usage: %0 folder or file echo リネームしたいファイルの入っているフォルダや該当するフォルダ内の1ファイルを指定します。
初心者質問で申し訳ないですが、お答えいただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/13 12:44