batファイル:フォルダ内の拡張子を指定

 

 

業務で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 削除確認を聞かない

 

 

これで無駄なことしなくて済む。良かった!

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。