🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

1702閲覧

batchでファイル名をフォルダ名の一部に一括で変更したい

kamome01

総合スコア16

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/02/13 10:47

フォルダ構造が以下のようになっているのですが、
ファイル名を「一つ上のフォルダ名のアンダーバー以前の数字」に一括で変更したいです。

:現在 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ファイルを指定します。

初心者質問で申し訳ないですが、お答えいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちゃんとテストしてませんが、こんな感じで。

CMD

1@echo off 2for /f "delims=" %%A in ('dir /s /b *.pdf') do ( 3 for %%B in (%%~dpA) do call :SUB %%A %%B 4) 5exit /b 6 7:SUB 8set B=%2 9for %%C in (%B:~0,-1%) do for /f "delims=_" %%D in ("%%~nxC") do ren %1 %%D.pdf

投稿2021/02/13 11:13

otn

総合スコア85882

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamome01

2021/02/13 12:44

ありがとうございます。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問