- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイル 現在のフォルダ名をファイル名に置き換える)
バッチファイルで現在のフォルダ名をファイル名に置き換える方法
このQ&Aのポイント
- バッチファイルを使用して、複数のフォルダ内に格納されている.txtファイルのファイル名を、現在のフォルダ名に置き換えて別のフォルダに格納する方法を教えてください。
- for文を使用して、データ取得元のフォルダを一つずつ処理し、その中にあるフォルダを再帰的に処理していく方法で実装します。
- 各フォルダ内の.txtファイルのファイル名に現在のフォルダ名を連結して、別のフォルダに格納します。ファイルの中身はそのままコピーされます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
rem 対象ファイルの一覧作成 dir /s /b C:\temp > file.tmp rem それに対して繰り返し for /f "delims=" %%F in (file.tmp) do ( rem パス名の分解(ディレクトリ名の取り出し) for /f "delims=\ tokens=3" %%D in ("%%F") do ( rem コピー(ファイル名%%Fの途中に%%Dを入れる) copy %%F C:\test\%%~nF_%%D%%~xF )) del file.tmp
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
>C:\temp\20100101\Mon\data1.txt "delims=\ tokens=3" で、\ で分解した3つめを取っていますので、4つめも取るようにします。 tokens=3,4 にすると %%D = 20100101, %%E = Mon になります。 dir /s /b C:\temp > file.tmp for /f "delims=" %%F in (file.tmp) do ( for /f "delims=\ tokens=3,4" %%D in ("%%F") do ( copy %%F C:\test\%%~nF_%%D_%%E%%~xF )) del file.tmp
質問者
お礼
正しく実行することができました。 ありがとうございました。
お礼
ご回答の結果をbatファイルにコピーして実行したら、ちゃんと出来ていました。すごいです! ありがとうございましたー。 もう1点お聞きしたいのですが、 こちらのローカルPCの実際のフォルダ構成は日付の下に 曜日が入っていて、下記のようになっています。 C:\temp\20100101\Mon\data1.txt C:\temp\20100101\Mon\data2.txt C:\temp\20100101\Mon\data3.txt これを C:\test\data1_20100101_Mon.txt C:\test\data2_20100101_Mon.txt C:\test\data3_20100101_Mon.txt のようにするには、 for文をもう一個加えればよいのでしょうか。 何もわかってなく申し訳ありませんが、よろしくお願いいたします。