- 締切済み
コマンドプロンプトでのリネーム
コマンドプロンプトで下記のようなファイル名をバッチ処理でリネームしたいのですが、どのように書けばよいでしょうか? 日本語名[半角スペース]2010年10月04日.拡張子 ↓ 2010-10-04.拡張子 日付の箇所はそのままの数字を利用したいです。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
>引数での指定ではなく、フォルダの中にある該当するファイルすべてに同様の処理を行いたいと思っています。 for %%F in (*) do call :SUB "%%~F" goto :EOF :SUB set A=%~1 : 先頭から空白の所まで削除 set A=%A:* =% : 先頭4文字を取り出す set Y=%A:~0,4% : 月部分を取り出す set M=%A:~5,2% : 日部分を取り出す set D=%A:~8,2% : リネーム(拡張子は %~x1) ren "%~1" "%Y%-%M%-%D%.%~x1"
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
ファイル名をどうやって指定するのかが書いてないのですが、バッチファイルの引数で指定するなら、ファイル名を%1で参照出来ます。それを環境変数にセットすると文字の取り出しが出来ます。 set A=%~1 : 先頭から空白の所まで削除 set A=%A:* =% : 先頭4文字を取り出す set Y=%A:~0,4% : 月部分を取り出す set M=%A:~5,2% : 日部分を取り出す set D=%A:~8,2% : リネーム(拡張子は %~x1) ren "%~1" "%Y%-%M%-%D%.%~x1"
補足
ファイル名の指定を忘れていました・・・すみません。 引数での指定ではなく、フォルダの中にある該当するファイルすべてに同様の処理を行いたいと思っています。 可能でしたらそちらの方法で教えていただければと思います。