お知らせ
2021年7月30日
FORコマンドを使ったファイル名変更でDOSコマンドを使う
バッチ処理でフォルダ内のファイルの名前と拡張子の間に文字を追加したくなりました。
renameコマンドで変更したいのでとりあえず無理だろうと思いつつ下記のように記述して動かして見ました。
@echo off rename *.txt *テスト.txt 結果は当然ダメ。ファイル名の末尾に変更したいファイル名が追加されただけでした。
変更前
変更後
想定している結果にするにはDOSコマンドを使えばいい事が分かりました。
以下のパーセントコマンドを使うことでうまくいきました。
「%~n変数」:変数から拡張子とパスを除いたファイル名を取得する。
「%~x変数」:変数から拡張子を取得する。
FORコマンドでファイル名を取得して、上記コマンドを使ってファイル名変更処理をします。
@echo off for %%A in (*.txt) do ( rename %%A %%~nAテスト%%~xA )
%%~nAで変数Aのファイル名「12345」を取得。%%~xAで変数Aの拡張子を取得。
「%%~nA」「%%~xA」の間に追加したい文字を入れる事で実現できました。
他にもパスからディレクトリ名だけを取得したり、ファイルの日時を取得することもできるみたい。
ファイル名やパスの操作をするのにDOSコマンドを使うと良さそうなのを知ることが出来ました。