お世話になっております。
最近、PowerShellの勉強をしているのですが、以下のようなスクリプトを
記述したいと思っているのですが、どうもうまくいきません。
rename.ps1というファイルの引数に、エクスプローラなどで選択している
ファイルのリストを渡します。
実際にはファイルを選択してコンテキストメニューの「送る」から
rename.ps1を呼び出します。これはうまくいきました。
スクリプトの最初で以下のように記述して、ファイルのリストを取得します。
以下の方法はネットで探しました。
powershell
1# 送られたファイルの一覧を配列で受け取る 2param( 3 [parameter(ValueFromRemainingArguments = $true)] 4 [String[]]$Path 5 # [FileInfo[]]$Info 6)
これで、$Pathに選択したファイルのフルパス名の一覧がセットされます。
ちなみに、FileInfo[]で受け取ることはできませんでした。
この後、$Pathに含まれてるファイルの配列を更新日の日付で降順に
ソートしたいのですが、やり方がよく分かりません。
Sort-Objectを使うと思ったのですが、ファイル名しか分からないので、
よくある以下のような記述は使えません。
powershell
1Get-ChildItem | Sort-Object -Property LastWriteTime
何かよい方法はないでしょうか?
よろしくお願い致します。
ファイル名がわかっているなら、Get-Item すれば FileInfo が取得できます。
なお、引数が $Path となっていますが、これはワイルドカードが使える場合に使用する引数名です。Explorer から使うなら、$LiteralPath とするのが良いと思います。Get-Item にも -LiteralPath でファイル名を渡してください。
なぜかというと、PowerShell では "[" や "]" がワイルドカードになるので、これらが含まれたファイル名を -Path で渡すと誤動作するからです。
Zuishin 様
アドバイスありがとうございました。
ご指摘の方法でFileInfo型の配列が取得できました。
本当にありがとうございました。
それでは自己解決してください。
回答1件
あなたの回答
tips
プレビュー