*Windows batファイル 便利コマンド [#q6712d95]
あまり知られていない、Windowsのbatファイルの便利コマンドを紹介します。
***基本コマンド [#na62d700]
■変数を設定
setコマンドを使います。
set A=1
Aに1を代入
■現在日付、時間を取得
> echo %DATE%
2008/09/09
> echo %TIME%
20:22:54.00
コマンドプロンプトでは、現在日付/時間はそれぞれ変数に入ってます。これをエチョーしてやればとれます。
***文字列置換 [#f39a048a]
DATE変数に格納されている現在日付から「/」を「.」に置換する。
>echo %DATE%
2008/09/09
>echo %DATE:/=.%
2008.09.09
へー
じゃあ、「/」をとって「YYYYMMDD」にしたい場合は?
>echo %DATE%
2008/09/09
>echo %DATE:/=%
20080909
へー
つまり、こんな感じでやります。
%[置換したい文字列を含む文字列]:[置換前文字列]=[置換先文字列]%
例えば、現在日付から「/」をとった文字列をC_DATE変数に格納したい場合は
>set C_DATE=%DATE:/=%
>echo %C_DATE%
20080909
となります。
***文字列の一部分だけを抽出 [#n704fdc8]
例えば、現在日付の「日にち」部分だけほしい場合、こんな感じに書きます。
>echo %DATE%
2008/09/09
>echo %DATE:~8,2%
09
へー
つまり、こんな感じでやります。
%[抽出したい文字列を含む文字列]:^[抽出を開始する文字列]=[抽出する文字数]%
先の例では、先頭から'''8文字目'''から'''2文字'''を抽出する、って感じになります。
へー
勉強になったでしょ?
batでも色々出来るんです!
***ホスト名を変数に代入したい [#pc7fc5b9]
そんなときは、以下の一行で、変数「param」にホスト名が代入されます。
>for /F %a in ('hostname') do set param=%a ←これを実行すると
>set param=hoge ←これが表示されて、
>echo %param% ←実際に「param」を表示してみると
hoge ←ホスト名が表示される
ちなみに、そんなことをしなくても、実は以下の一文で一発です。
>echo %COMPUTERNAME%
hoge
なんと、ホスト名は「%COMPUTERNAME%」変数に入っているとは!
***よく使う変数名 [#d1fbf2eb]
というわけで、よく使う変数名
|変数名|内容|
|%DATE%|現在日付が格納される|
|%TIME%|現在時刻が格納される|
|%COMPUTERNAME%|Windowsのホスト名が格納される|
***ディレクトリだけコピーする [#k52421cc]
よく、ディレクトリ構造をひな形としてほかにコピーしたい場合があります。
そんなとき、xcopyのオプションを指定することでディレクトリだけ指定してコピーできます。
-/T : ファイルはコピーせず、ディレクトリのみコピー
実行例は以下の通り。
D:\MyDocument\01_tmp>xcopy /T erd erd_test
erd_test は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)? D
元ディレクトリツリーは「erd」でコピー先は「erd_test」です。
実際にやるとわかります。
参考URL
-http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/xcopy.shtml
*リンク [#t863fb78]
バッチプログラムのリンク
-[[さすけのプログラミング入門(バッチプログラムの作成):http://sasuke.main.jp/bat.html]]
-[[DOSプロンプト活用相談室LOG:http://www.fpcu.jp/dosvcmd/bbs/log/cat3/set_path/]]