はじめに
コジマです。
バッチ処理でログファイルやバックアップファイルを作成するときに
欠かせないのが日付。
20181220_hoge.log
のようなファイルを作ることが時々出てくることあります。
自動実行することも考えると
日付はyyyymmddの形で変数に入れておきたいんですよね。
- Windowsバッチ
- PowerShell
- bash
でそれぞれどのように書けばyyyymmddの形を変数に格納できるか
紹介します。
Windowsバッチ
以降変数名をdateformatとしておきます。
Windowsバッチの場合はこう書きます。
setコマンドを使用することで変数を使用できます。
%date%は日付をyyyy/mm/ddの形で取得することのできる環境変数です。
変数名と後ろの%の間に:A=Bを入れることで変数内のAをBに置換することが可能です。
この場合は%date:/=%と書くことで/を無に置換。すなわち/を消去することができます。
まとめると
set dateformat=%date:/=%
は%date%で出力されるyyyy/mm/ddから/を取り除いたyyyymmddを
setコマンドによって変数dateformatに格納することができます。
注意点としては=の前後はスペースを入れないことです。
スペースも一緒に変数に入れちゃうことあるんですよね。
PowerShell
PowerShellでは以下のように書きます。
PowerShellでは$を付けて変数宣言します。
コマンドの実行結果を格納するために特別な処理は必要ありません。
しかしながらPowerShellのコマンドは長いものが多く、
覚えきれないと思うので、実際スクリプトを書くときはPowerShell ISEを
使うことをお勧めします。
bash
bashでは以下のように書きます。
bashではコマンドの実行結果を変数に格納するときは
バッククォート`で囲みます。
”の中に書式を指定します。
‘%Y%m%d’と書けばyyyymmddで取れますし、
‘%Y/%m/%d’と書けばyyyy/mm/ddとなります。
大文字小文字間違えていけない点に注意です。
%yとすると年を下二桁しか取れないし
%Mとすると時分秒の分を取るし
%Dは%m/%d/%yに等しいので、
20181220って取りたいのに
‘%y%M%D’と指定してしまうと
180012/20/18 (分は00としてる)
となってしまいます。注意しましょう。
さいごに
読んでくれてありがとうございます。
業務系の案件で働いているとバッチを使った自動化で日付を使うこと割とよくあります。
今回紹介した内容を頭に入れておくだけで捗りますよ。
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。