プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windows、ファイルのタイムスタンプ(作成日時、更新日時)を変更する2(前の記事の改訂版)
ぐはっ!Σ( ̄◇ ̄;)

Windows、ファイルのタイムスタンプ(作成日時、更新日時)を変更する

の記事で

■作成日時変更
powershell -Command $item = Get-Item -LiteralPath C:\hoge.txt;$item.CreationTime = Get-Date '2015/12/29 01:23:45'

■更新日時変更
powershell -Command $item = Get-Item -LiteralPath C:\hoge.txt;$item.LastWriteTime = Get-Date '2015/12/29 01:23:45'

という書き方を紹介したのですが、早速もっと楽な書き方を見つけてしまいました。
というわけで、こっちの方が、見やすいし、短いので、おすすめですφ(--)

■作成日時変更
powershell -Command Set-ItemProperty C:\hoge.txt; -name CreationTime -value '2015/12/29 01:23:45'

■更新日時変更
powershell -Command Set-ItemProperty C:\hoge.txt; -name LastWriteTime -value '2015/12/29 01:23:45'

超大事な注意点として、日付を囲むのは「'(シングルクォート)」です。
「"(ダブルクォート)」で囲むとエラーになります。
ご注意ください。

これで話は終わりですが、せっかくなので私の苦労話を聞いてくださいよ。

そもそも

Windows、ファイルのタイムスタンプ(作成日時、更新日時)を変更する

の記事を書くために調査していて最初に見つけたのは、今回の手法なのです。

powershell -Command Set-ItemProperty C:\hoge.txt; -name CreationTime -value "2015/12/29"

でした。

これで見事、タイムスタンプは更新できたのですが、時間も設定しようと思って

powershell -Command Set-ItemProperty C:\hoge.txt; -name CreationTime -value "2015/12/29 01:23:45"

としたところ

Set-ItemProperty : 引数 '01:23:45' を受け入れる位置指定パラメーターが見つかりま
せん。
発生場所 行:1 文字:17
+ Set-ItemProperty <<<<  C:\hoge.txt -name LastWriteTime -value 2015/12/29 01:2
3:45
    + CategoryInfo          : InvalidArgument: (:) [Set-ItemProperty]、Paramete
    rBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
   .Commands.SetItemPropertyCommand

というエラーが出てしまったのです。

これを見た私は「なんだよ、時間が設定できないなら意味がないじゃん(-ε-)」と
豪快な勘違いをしてしまったのです。

ちゃんと調べていないので断言はできませんが、
日付と時間の区切りの半角スペースがパラメータの区切りと認識されたのでしょうね。

私は「-value」のパラメータとして「"2015/12/29 01:23:45"」を与えたつもりでした。
実際には「"2015/12/29」が「-value」のパラメータとして認識され、
残りの「01:23:45"」に対してエラーが出ていたのでしょう。

試しに「'(シングルクォート)」で囲んで

powershell -Command Set-ItemProperty C:\hoge.txt; -name CreationTime -value '2015/12/29 01:23:45'

としたところ、ふっつーに動きました(-ε-)

ちなみに、Windows PowerShellのコンソールから実行すると「"(ダブルクォート)」囲みの

Set-ItemProperty C:\hoge.txt; -name CreationTime -value "2015/12/29 01:23:45"

でも普通に動きます。
「powershell -Command」を使ってコマンドプロンプトで動かすとき特有の現象なので、ご注意ください。

ということで、先の記事で

■作成日時変更
powershell -Command $item = Get-Item -LiteralPath C:\hoge.txt;$item.CreationTime = Get-Date '2015/12/29 01:23:45'

■更新日時変更
powershell -Command $item = Get-Item -LiteralPath C:\hoge.txt;$item.LastWriteTime = Get-Date '2015/12/29 01:23:45'

と書きましたが、こっちに訂正させてくださいφ(--)

■作成日時変更
powershell -Command Set-ItemProperty C:\hoge.txt; -name CreationTime -value '2015/12/29 01:23:45'

■更新日時変更
powershell -Command Set-ItemProperty C:\hoge.txt; -name LastWriteTime -value '2015/12/29 01:23:45'

そんな感じ\(-ε-)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Windows  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事