PowerShellでdateコマンドを使う時のちょっとしたこと

PowerShellでdateコマンドの-Formatを使う時に気付いたこと

ちゃんとhelpなどを読めば判ることかと思いますが、パッと使った時の失敗談です。
今回の目的は、PowerShellで実行したログをファイルにComputer名と日時を付けたいというものです。

dateコマンドで出力形式を指定した際の失敗

単純にdateコマンドを実行すると、次のようになります。

PS C:\Users\xxxxxx> date

2017年10月26日 16:46:04

PS C:\Users\xxxxxx>

dateコマンドに-Formatオプションを付ける時

行き当たりばったりの私がdateコマンドに-Formatオプションを付けると次のようになりました。

PS C:\Users\xxxxxx> date -Format "yyyymmdd hhmmss"
20174926 044943
PS C:\Users\xxxxxx>

あれ?53日になってる。なんか間違ったかな?日付と時間を分けるのかしら・・・

PS C:\Users\xxxxxx> date -Format "yyyy/mm/dd hh:mm:ss"
2017/53/26 04:53:46
PS C:\Users\xxxxxx>

違いますね。正しくは日付の部分を大文字にします。

PS C:\Users\xxxxxx> date -Format "yyyy/MM/dd hh:mm:ss"
2017/10/26 04:56:17
PS C:\Users\xxxxxx>

mmだと、分になるんですね。普通に考えれば判るのに、私の頭では・・・
そう言えば12時間表記になってる。

表示するだけなら、このような出力方法もあるようです。

PS C:\Users\xxxxxx> date -Format g
2017/10/26 17:03
PS C:\Users\xxxxxx>

今回の目的にあった結果を返すコマンド

横道に逸れましたが、今回の目的はファイル名に日付を入れたい。というものですので、スペースや”/“や”:“は不要です。

PS C:\Users\xxxxxx> date -f yyyyMMddhhmmss
20171026051945
PS C:\Users\xxxxxx>

これを、次のようにしたいというのが希望でした。時間は小文字だと12時間表記で大文字だと24時間表記になります。

PS C:\Users\xxxxxx> date -f yyyyMMddHHmmss
20171026172140
PS C:\Users\xxxxxx>
Start-Transcript -path $home\desktop\sample_$(date -f yyyyMMddHHmmss).txt

このコマンドを実行するとStop-Transcriptでログを終了するまでの間の操作が記録されます。
sample_20171026172630.txtのようなファイルがデスクトップ上に作成されるコマンドになります。

スポンサーリンク
spdsk-side
spdsk-side