2013/07/21

DOSバッチを作る際のTIPS

仕事でWindowsのDOSバッチでバックアップ用バッチを作る必要があったので、
その際に覚えたTIPSをメモ代わりに書いていきます。

■日付を数字だけにする("/"を取り除く)

C:\>echo %date%
2013/07/21

C:\>set today=%date:~-10,4%%date:~-5,2%%date:~-2,2%

C:\>echo %today%
20130721

■時間を数字だけにする(":"や秒以下を取り除く)

C:\>echo %time%
13:56:08.58

C:\>set nowtime=%time:~-11,2%%time:~-8,2%%time:~-5,2%

C:\>echo %nowtime%
135644

■forループの中で現在時刻を取得する

例えば

for %%u in (1,2,3) do (
echo ##### %%u周目 %time% ##### >> C:\test.log
timeout 5 /nobreak >nul
)

のようなバッチを実行すると、出力は

C:\test.log
 ##### 1周目 14:06:35.87 #####
 ##### 2周目 14:06:35.87 #####
 ##### 3周目 14:06:35.87 #####

となり、全て1周目の時間となってしまいます。
これを各周のリアルタイムの時間を出力したい場合は、以下のように書きます。



setlocal enabledelayedexpansion
for %%u in (1,2,3) do (
echo ##### %%u周目 !time! ##### >> C:\test.log
timeout 5 /nobreak >nul
)

すると、出力は

C:\test.log
 ##### 1周目 14:09:30.35 #####
 ##### 2周目 14:09:35.17 #####
 ##### 3周目 14:09:40.10 #####

と各周が実行された時間が正確に表示されます。


■ファイルを圧縮する

事前準備:圧縮ソフトをインストールしておく
※下記はLhaplusの例です。

start /wait C:\PROGRA~1\Lhaplus\Lhaplus.exe /c:zip /o:C\ToDir C:\FromDir\*.txt

/wait =処理が終わるまで、次のコマンドの実行を待つ
/c: 圧縮形式
/o: 圧縮先フォルダ
末尾 圧縮対象 

詳細↓
http://d.hatena.ne.jp/uen1130/20101205/p1



<追記予定>
・メール送信方法

0 件のコメント:

コメントを投稿