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

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


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*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でも色々出来るんです!
//↓更新日を表示するプラグイン 削除しないでください。
更新日:&lastmod;

***ホスト名を変数に代入したい [#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/]]


-[[Unixでのlsに相当するdirコマンドのオプション一覧(コマンドプロンプト):http://blog.layer8.sh/ja/2011/12/12/unix%E3%81%A7%E3%81%AEls%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%99%E3%82%8Bdir%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3/]]

-[[DOS コマンド一覧 For:http://pf-j.sakura.ne.jp/program/dos/doscmd/for.htm]]

-[[Windowsのコマンドプロンプトやバッチ内で文字列置換を簡単な記述で行う:http://web.plus-idea.net/2013/08/windows-bat-replace/]]


この記事は秀逸です!
-[[開発に役立つ,BATファイルの書き方・パターン集 (コマンドプロンプトの定石を体系的に学び,バッチ中級者になろう):http://d.hatena.ne.jp/language_and_engineering/20130502/PatternsOfMSDOSorBAT]]

-[[BATのforループで,「0埋めされた数値」を連番で出力しよう (環境変数の遅延展開と,数値の大小比較判定の方法):http://d.hatena.ne.jp/language_and_engineering/20131116/BATLoopNumberIncrementByDelayedExpansion]]

-[[Windowsバッチで 1行で複数の処理を記述:http://winofsql.jp/VA003334/infoboard.php?id=080829094455&mid=dos&pid=6]]

-[[Windows バッチファイル : 二重ループの内側のループを抜けたい:http://vaindespair.blogspot.jp/2012/03/blog-post_07.html]]

-[[Windows バッチファイル : テキストファイルにある文字列を置換したい:http://vaindespair.blogspot.jp/2012/03/blog-post_14.html]]