2015.
12.
29
15:35:10
ぐはっ!Σ( ̄◇ ̄;)
Windows、ファイルのタイムスタンプ(作成日時、更新日時)を変更する
の記事で
■作成日時変更
■更新日時変更
という書き方を紹介したのですが、早速もっと楽な書き方を見つけてしまいました。
というわけで、こっちの方が、見やすいし、短いので、おすすめですφ(--)
■作成日時変更
■更新日時変更
超大事な注意点として、日付を囲むのは「'(シングルクォート)」です。
「"(ダブルクォート)」で囲むとエラーになります。
ご注意ください。
これで話は終わりですが、せっかくなので私の苦労話を聞いてくださいよ。
そもそも
Windows、ファイルのタイムスタンプ(作成日時、更新日時)を変更する
の記事を書くために調査していて最初に見つけたのは、今回の手法なのです。
でした。
これで見事、タイムスタンプは更新できたのですが、時間も設定しようと思って
としたところ
というエラーが出てしまったのです。
これを見た私は「なんだよ、時間が設定できないなら意味がないじゃん(-ε-)」と
豪快な勘違いをしてしまったのです。
ちゃんと調べていないので断言はできませんが、
日付と時間の区切りの半角スペースがパラメータの区切りと認識されたのでしょうね。
私は「-value」のパラメータとして「"2015/12/29 01:23:45"」を与えたつもりでした。
実際には「"2015/12/29」が「-value」のパラメータとして認識され、
残りの「01:23:45"」に対してエラーが出ていたのでしょう。
試しに「'(シングルクォート)」で囲んで
としたところ、ふっつーに動きました(-ε-)
ちなみに、Windows PowerShellのコンソールから実行すると「"(ダブルクォート)」囲みの
でも普通に動きます。
「powershell -Command」を使ってコマンドプロンプトで動かすとき特有の現象なので、ご注意ください。
ということで、先の記事で
■作成日時変更
■更新日時変更
と書きましたが、こっちに訂正させてくださいφ(--)
■作成日時変更
■更新日時変更
そんな感じ\(-ε-)/
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
せん。
発生場所 行: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'
そんな感じ\(-ε-)/