2

次のコードでは、$client = XRS1 の場合

if (Test-Path C:\dbbackups\cm_$client-*.full.bak){
Rename-Item -path C:\dbbackups\cm_$client-*.bak -newname cm_$client.bak
Write-Host "New file found, renamed to: cm_$client.bak"

Test-Path ステートメントは C:\dbbackups\cm_xrs1-2013414.full.full.bak を見つけることができますが、Rename-Item の -path は見つけることができません。

私が得るエラーは

Rename-Item : Cannot process argument because the value of argument "path" is not valid. Change the value of the "path" argument and run the operation again.
At C:\Users\Aaron\Documents\0000 - PowerShell DB Update Utility\UpdateCMDatabases.ps1:167 char:1
+ Rename-Item -path C:\dbbackups\cm_$client-*.bak -newname cm_$client.bak
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Rename-Item], PSArgumentException
    + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.RenameItemCommand
4

2 に答える 2

11

1 行のコマンドだけが必要な場合は、これは PowerShell のみのエラーであり、このコマンドは古き良きコマンド プロンプトで問題なく機能することに注意してください。

powershell コマンドの完全な形式は次のとおりです。

ren -Path [something with a wildcard] -NewName [something else]

このエラーは、Path パラメーターの値に関連しています。パスにワイルドカードを使用できますが、単一のファイルに解決する必要があります[1]。PowerShell でワイルドカードを使用するには、ワイルドカードを 1 つずつパイプして項目の名前変更コマンドに渡す必要があります。txt ファイルの名前をログに変更する例を次に示します[2] :

get-childItem *.txt | rename-item -newname { $_.name -replace '\.txt','.log' }
于 2015-05-05T09:15:30.657 に答える
1

Rename-Item がワイルドカードを好まない場合は、ワイルドカードを指定しないでください

Convert-Path C:\dbbackups\cm_$client-*.full.bak | % {
  if (Test-Path $_) {
    Rename-Item $_ cm_$client.bak
  }
}
于 2014-07-29T03:55:00.577 に答える