PowerShell正在抱怨路径,但路径有效

PowerShell正在抱怨路径,但路径有效,powershell,rename-item-cmdlet,Powershell,Rename Item Cmdlet,在下面的代码中,当$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.ful

在下面的代码中,当$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,但重命名项中的-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

如果重命名项不喜欢通配符,则不要给它通配符

转换路径C:\dbbackups\cm_$client-*.full.bak |%{
if(测试路径$){
重命名项目$\cm\u$client.bak
}
}

对于那些只需要一行命令的用户,请注意这是一个仅适用于powershell的错误,并且该命令在良好的旧命令提示符下工作正常

powershell命令的完整形式为

ren -Path [something with a wildcard] -NewName [something else]
该错误与Path参数的值有关。它接受路径中的通配符,但必须解析为单个文件。要在powershell中使用通配符,需要将通配符逐个传递到rename item命令。以下是将txt文件重命名为日志的示例:


这不会丢失文件吗?因为您将所有与通配符匹配的项重命名为同一名称?@Eris该问题似乎也在原始问题中。所以史蒂文保留了这个错误。@ERI是一个管道,通过
select-f1
可以修复它感谢史蒂文的答案,它工作得非常好!计划将文件重命名为相同名称。虽然我的目的是得到最新的一个,并删除其余的,所以我可能不得不在一个明确的代码。真棒的信息。谢谢添加!
get-childItem *.txt | rename-item -newname { $_.name -replace '\.txt','.log' }