トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Windows batファイル 便利コマンド のバックアップ差分(No.5)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*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/]]