Windows PowerShellの勉強その4
その3では条件に一致するファイル一覧を取得した。
今回、その4では日付や時刻の取得をしてみる。
従来のコマンドプロンプトであれば、コマンドのdate /tやtime /t、あるいは環境変数の%date%や%time%を使って日付や時刻を取得するが、同様のことをPowerShellでやってみる。
日付と時刻を取得するコマンドは何だろう?。
きっとget-何とかで始まるコマンドレットだろう。
これでget動詞を持つコマンドレットの一覧が表示される。
PS C:\> get-command -verb get CommandType Name Definition ----------- ---- ---------- Cmdlet Get-Acl Get-Acl [[-Path] <String[]>] [-Au... Cmdlet Get-Alias Get-Alias [[-Name] <String[]>] [-... Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-FileP... Cmdlet Get-ChildItem Get-ChildItem [[-Path] <String[]>... Cmdlet Get-Command Get-Command [[-ArgumentList] <Obj... Cmdlet Get-Content Get-Content [-Path] <String[]> [-... Cmdlet Get-Credential Get-Credential [-Credential] <PSC... Cmdlet Get-Culture Get-Culture [-Verbose] [-Debug] [... Cmdlet Get-Date Get-Date [[-Date] <DateTime>] [-Y... Cmdlet Get-EventLog Get-EventLog [-LogName] <String> ... Cmdlet Get-ExecutionPolicy Get-ExecutionPolicy [-Verbose] [-... Cmdlet Get-Help Get-Help [[-Name] <String>] [-Cat... Cmdlet Get-History Get-History [[-Id] <Int64[]>] [[-... Cmdlet Get-Host Get-Host [-Verbose] [-Debug] [-Er... Cmdlet Get-Item Get-Item [-Path] <String[]> [-Fil... Cmdlet Get-ItemProperty Get-ItemProperty [-Path] <String[... Cmdlet Get-Location Get-Location [-PSProvider <String... Cmdlet Get-Member Get-Member [[-Name] <String[]>] [... Cmdlet Get-PfxCertificate Get-PfxCertificate [-FilePath] <S... Cmdlet Get-Process Get-Process [[-Name] <String[]>] ... Cmdlet Get-PSDrive Get-PSDrive [[-Name] <String[]>] ... Cmdlet Get-PSProvider Get-PSProvider [[-PSProvider] <St... Cmdlet Get-PSSnapin Get-PSSnapin [[-Name] <String[]>]... Cmdlet Get-Service Get-Service [[-Name] <String[]>] ... Cmdlet Get-TraceSource Get-TraceSource [[-Name] <String[... Cmdlet Get-UICulture Get-UICulture [-Verbose] [-Debug]... Cmdlet Get-Unique Get-Unique [-InputObject <PSObjec... Cmdlet Get-Variable Get-Variable [[-Name] <String[]>]... Cmdlet Get-WmiObject Get-WmiObject [-Class] <String> [... |
おお、Get-Dateがあるなあ。
でもGet-Timeは無いらしい。
ではGet-Dateの詳細を。
PS C:\> get-help get-date -detailed 名前 Get-Date 概要 現在の日付と時刻を取得します。 構文 Get-Date [[-date] <DateTime>] [-displayHint {<Date> | <Time> | <DateTime>}] [-format <string>] [-year <int>] [-month <int>] [-day <int>] [-hour <int>] [-minute <int>] [-second <int>] [<CommonParameters>] Get-Date [[-date] <DateTime>] [-displayHint {<Date> | <Time> | <DateTime>}] [-uFormat <string>] [-year <int>] [-month <int>] [-day <int>] [-hour <int> ] [-minute <int>] [-second <int>] [<CommonParameters>] 詳細説明 現在の日付と時刻を取得します。 : : 以下省略 : : |
get-dateのフォーマットは
PS C:\> get-date |format-list DisplayHint : DateTime DateTime : 2009年9月19日 22:38:31 Date : 2009/09/19 0:00:00 Day : 19 DayOfWeek : Saturday DayOfYear : 262 Hour : 22 Kind : Local Millisecond : 107 Minute : 38 Month : 9 Second : 31 Ticks : 633889967111073705 TimeOfDay : 22:38:31.1073705 Year : 2009 |
ではこの中から時刻だけを取り出したいとか、年月日の日だけを取り出したい場合はどうするのだろう?。
答えはget-dateをカッコで囲んで、右側に.項目名を指定するらしい。
こんな感じ。
PS C:\> (get-date).DateTime 2009年9月19日 22:56:35 PS C:\> (get-date).date 2009年9月19日 0:00:00 PS C:\> (get-date).year 2009 PS C:\> (get-date).month 9 PS C:\> (get-date).day 19 |
この辺まではなんとなくわかる。
しかし年月日だけとか、時分秒だけ取り出す方法は?。
試しにTimeOfDayを見てみると、
PS C:\> (get-date).TimeOfDay Days : 0 Hours : 22 Minutes : 54 Seconds : 50 Milliseconds : 775 Ticks : 824907751365 TotalDays : 0.954754341857639 TotalHours : 22.9141042045833 TotalMinutes : 1374.846252275 TotalSeconds : 82490.7751365 TotalMilliseconds : 82490775.1365 |
ここに時、分、秒はそれぞれ別項目として存在する。
時分秒のまとまった項目はなさそうだ。
この方法で時、分、秒がそれぞれ別項目として取得できる
PS C:\> (get-date).TimeOfDay.Hours 23 PS C:\> (get-date).TimeOfDay.Minutes 2 PS C:\> (get-date).TimeOfDay.Seconds 26 |
しかし時、分、秒を別々に取得してわざわざそれをつなぎ合わせる必要があるのかな?。
答えはなんと、DisplayHintにさらにオプションを指定するらしい。
PS C:\> get-date -DisplayHint datetime 2009年9月19日 23:50:58 PS C:\> get-date -DisplayHint date 2009年9月19日 PS C:\> get-date -DisplayHint time 23:51:05 |
さて、やっと本題。
日付や時刻を取得して、それをファイル名にするための方法は?。
それは-formatオプションで指定できる。
PS C:\> get-date –format yyyyMMdd 20090920 PS C:\> get-date –format hhmmss 012931 PS C:\> get-date –format yyyyMMdd-hhmmss 20090920-012939 PS C:\> |
ちなみに引数で指定する大文字のMMは月で、小文字のmmは分と明確に決まっている。
PS C:\> get-date –format MM 09 PS C:\> get-date –format mm 32 |
今回参考にしたWebページは、これらです。
http://journal.mycom.co.jp/articles/2009/04/24/powershell/001.html
・【ハウツー】ゼロからはじめるWindows PowerShell - コマンドレット編 (2) コマンドレットを理解しよう.2 | パソコン | マイコミジャーナル
http://sawano.members.icraft.jp/wp/2008/07/24/334.html
・Windows、PowerShellでYYYYMMDD « SawanoBlog.
http://www.microsoft.com/japan/technet/scriptcenter/topics/winpsh/convert/day.mspx
・スクリプトセンター > VBScript から Windows PowerShell へ > VBScript の Day 関数の変換
- 関連記事
-
- なんと渋谷で飲み会 (2009/10/15)
- 職場の引越し (2009/10/14)
- 期末&引越し準備で大忙し (2009/09/30)
- Windows PowerShellの勉強その4 (2009/09/20)
- またまたNmlAccf.sysが原因でSTOPエラー (2009/09/19)
- 新しい赤い自転車を購入 (2009/09/14)
- Windows PowerShellの勉強その3 (2009/09/07)