業務でexeファイルを更新する際
当初
環境
bin : 現在のexeを置くフォルダ
手順
①元のexeに日付をつけてリネーム
②新しいexeを入れる
という流れだったが
同じフォルダ内にリネームで取っておくと地味に邪魔になるので
改悪案
環境
bin : 現在のexeを置くフォルダ
bin_old : バックアップとしてexeを置くフォルダ(exeに日付をつけて保存)
手順
①binフォルダを開く
②更新するexeをコピー(または切り取り)
③bin_oldフォルダを開く
④コピー(または切り取り)したexeを張り付け
⑤exeに日付をつけてリネーム
⑥binフォルダを開く
⑦新しいexeを入れる
という流れになった。
アホか!?こんなん毎回やってられるか!?
たぶんbatファイルで一発でできるじゃろ!?
ってことで久々のbatファイル作成
自動でリネームコピーしてバックアップとってから上書きするようにする。
batファイル
環境
bin_new:新しいexeを入れる batファイルはここに置く
bin :現在のexeを置くフォルダ
bin_old:バックアップとしてexeを置くフォルダ(exeに日付をつけて保存)
手順
①bin_newフォルダに新しいexeを入れる
②bin_newフォルダ内のbatファイルを実行
echo off rem ◆事前準備◆ rem D:\直下に[bin_new]フォルダを作成 rem [bin_new]フォルダ内に、このbatファイルを置いてください。 rem rem ★動作★ rem [bin_new]フォルダ内のexe名を取得し rem 該当exeを停止させる rem [bin]フォルダから該当exeをリネーム rem 該当exeを[bin]フォルダから[bin_old]フォルダへ移動 rem [bin_new]フォルダ内のexeを[bin]フォルダに上書き rem [bin_new]フォルダからexeを削除 rem ログ出力 echo %date% %time:~0,5% >> log.txt rem 日付取得 set hiduke=%date:~0,4%%date:~5,2%%date:~8,2% rem ディレクトリ確認。なければ作る mkdir D:\bin_old rem exeコピー処理 echo on for %%a in (*.exe) do ( echo %%a >> log.txt TASKKILL /IM %%a RENAME d:\bin\%%a %%a%hiduke% MOVE /Y d:\bin\%%a%hiduke% d:\bin_old COPY /Y d:\bin_new\%%a d:\bin\%%a DEL /Q del %%a ) rem ログ出力(改行) echo; >> log.txt echo off
メモ——————————————
拡張子が「.exe」のファイルを対象に繰り返す
拡張子.exeを変数aに格納
ファイルを対象とした繰り返し処理「for」の例文
for %%[アルファベット1文字] in ([ファイル名]) do (
[処理内容]
)
引数メモ—————————————
/IM プロセス名を指定
/Y 上書き確認を聞かない
/Q 削除確認を聞かない
これで無駄なことしなくて済む。良かった!
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。