Operations Lab.

PowerShell で touch する

with one comment

Linux を使用していると touch コマンドを使用してファイルを新規作成したりタイムスタンプを変更したりしますが、Windows には touch コマンドがありません。(PowerShell のエイリアスとしても登録されていません。)PowerShell で同様の操作を行う場合は、New-Item コマンドレットまたは Get-Item コマンドレットを使用します。

ファイルの新規作成

ファイルを新規に作成する場合は、New-Item を使用します。エイリアスは ni です。

Parameter Set: pathSet
New-Item [-Path] <String[]> [-Credential <PSCredential> ] [-Force]
 [-ItemType <String> ] [-Value <Object> ] [-Confirm] [-WhatIf]
 [-UseTransaction] [ <CommonParameters>]

Parameter Set: nameSet
New-Item [[-Path] <String[]> ] -Name <String> [-Credential <PSCredential> ] [-Force]
 [-ItemType <String> ] [-Value <Object> ] [-Confirm] [-WhatIf]
 [-UseTransaction] [ <CommonParameters>]

 

新規作成するファイルのパス(または名前)を指定します。名前指定でパスを省略した場合は、カレントフォルダに作成されます。また、New-Item コマンドレットはファイル以外のアイテムも作成できるため、ItemType スイッチで作成対象の種類(今回はファイル)を指定する必要があります。

PS C:\Users\kazu\Documents\PowerShell> Get-ChildItem
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/12      2:44        646 tmp-20130212-01.ps1
-a---        2013/02/12      2:44        247 tmp-20130212-02.ps1

PS C:\Users\kazu\Documents\PowerShell> New-Item -ItemType file newfile
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:09          0 newfile

PS C:\Users\kazu\Documents\PowerShell> Get-ChildItem
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:09          0 newfile
-a---        2013/02/12      2:44        646 tmp-20130212-01.ps1
-a---        2013/02/12      2:44        247 tmp-20130212-02.ps1

ファイルのタイムスタンプ変更

ファイルのタイムスタンプを変更する場合は、対象のファイルを取得しプロパティを変更します。ファイル(アイテム)を取得するには、Get-Item を使用します。エイリアスは gi です。

Parameter Set: Path
Get-Item [-Path] <String[]> [-Credential <PSCredential> ]
 [-Exclude <String[]> ] [-Filter <String> ] [-Force] [-Include <String[]> ]
 [-UseTransaction] [ <CommonParameters>]

Parameter Set: LiteralPath
Get-Item -LiteralPath <String[]> [-Credential <PSCredential> ]
 [-Exclude <String[]> ] [-Filter <String> ] [-Force] [-Include <String[]> ]
 [-UseTransaction] [ <CommonParameters>]

 

タイムスタンプを変更したいファイルをオブジェクトとして取得した後、LastAccessTime プロパティまたは LastWriteTime プロパティを変更します。LastAccessTime が最終アクセス日時、LastWriteTime が最終更新日時です。

例えば、ファイル newfile の最終更新日時を現在時刻へ変更する場合は、LastWriteTime プロパティへ現在時刻を表す DateTime 型のオブジェクト(Get-Date コマンドレットで取得できます)を設定します。

PS C:\Users\kazu\Documents\PowerShell> $a = Get-Item newfile

PS C:\Users\kazu\Documents\PowerShell> $a
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:09          0 newfile

PS C:\Users\kazu\Documents\PowerShell> $a.LastWriteTime = (Get-Date)

PS C:\Users\kazu\Documents\PowerShell> $a
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:25          0 newfile

PS C:\Users\kazu\Documents\PowerShell> Get-Item newfile
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:25          0 newfile

$a のプロパティだけでなく、ファイルのプロパティも変更されていることが分かります。

ファイルオブジェクトを変数へ格納せず、いきなりプロパティを変更することもできます。

PS C:\Users\kazu\Documents\PowerShell> Get-Item newfile
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/02/17     23:25          0 newfile

PS C:\Users\kazu\Documents\PowerShell> (Get-Item newfile).LastWriteTime = (Get-Date -Date "2013/01/01 11:11:11")

PS C:\Users\kazu\Documents\PowerShell> Get-Item newfile
    ディレクトリ: C:\Users\kazu\Documents\PowerShell
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2013/01/01     11:11          0 newfile
広告

Written by kazu

2013/02/17 @ 22:41

カテゴリー: PowerShell

Tagged with ,

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. blowingside でリブログしてコメントを追加:
    ファイルサーバーの移行した時に、意外にも使う事になったので助かりました。

    you

    2014/01/19 at 13:51


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。