PowerShell 1.0-スクリプトが別のディレクトリにある場合、ファイルの名前変更は失敗します
-
28-09-2019 - |
質問
古いログファイルの名前を変更しようとしていますが、スクリプトはログファイルと同じフォルダーに保存されている場合にのみ機能します。これがコードです:
cls
$file = gci E:\logs |? {$_.extension -eq ".log" |% {rename-item $_ ($_.Name + ".old")}
このスクリプトを実行したとき E:\logs
, 、うまく機能します。ただし、C:スクリプトからこのスクリプトを実行すると、このエラーが発生します。
Rename-Item: Cannot rename because item at 'my.log.file.log' does not exist.
At C:\Scripts\rename-script.ps1:2 char:92
+ $file = gci E:\logs |? {$_.extension -eq ".log" |% {rename-item $_ ($_.Name + ".old")}
+ CategoryInfo : InvalidOperation (:) [Rename-Item], FSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
私も使用しようとしました Move-Item
でコマンド -literalpath
切り替えが同じ結果がありました
解決
名前のプロパティは、パスのないファイル名だけを提供します。おそらく、代わりにFullNameプロパティを使用したいと思うでしょう。 Rename-Itemがソースファイル名のパイプライン入力を受け入れるため、これを簡素化することもできます。
gci E:\logs *.log | rename-item -newname {$_.FullName + ".old"}
また、GCI(get-childitem)を使用すると、 -Filter
パルメイター。このパラメーターは位置パラメーター(2)であるため、パラメーター名を指定する必要さえありません。
他のヒント
DOSパスにないために見つけていないように聞こえます。
Viperjay
所属していません StackOverflow