在文件名中查找替换文本-Powershell

在文件名中查找替换文本-Powershell,powershell,powershell-2.0,Powershell,Powershell 2.0,我需要替换文件名中的不同字符串。是否有办法使用Powershell中的查找替换函数修改文件名 我在一个.bat文件中完成了这项工作,但希望改为在PS中完成。您没有提供任何详细信息,因此下面是一个通用示例: $pattern = "foo" # Getting all files that match $pattern in a folder. # Add '-Recurse' switch to include files in subfolders. $search_results = Ge

我需要替换文件名中的不同字符串。是否有办法使用Powershell中的查找替换函数修改文件名


我在一个.bat文件中完成了这项工作,但希望改为在PS中完成。

您没有提供任何详细信息,因此下面是一个通用示例:

$pattern = "foo"

# Getting all files that match $pattern in a folder.
# Add '-Recurse' switch to include files in subfolders.
$search_results = Get-ChildItem -Path "C:\folder" `
    | Where-Object { ((! $_.PSIsContainer) -and ($_.Name -match $pattern)) } 

foreach ($file in $search_results) {
    $new_name = $file.Name -replace $pattern, "bar"

    # Remove '-WhatIf' switch to commit changes.
    Rename-Item -WhatIf -Path $file.FullName -NewName $new_name
}

请注意,
$pattern
将被视为正则表达式,因此,如果需要捕获特殊字符,请将其转义。

我知道这将获取文件中的所有文本,但我只想对文件名本身进行查找替换。可能与我要查找的完全相同,对于问题的模糊性,抱歉。谢谢,您可以通过管道直接重命名项目并使用脚本块(例如
…)来简化此过程其中{…}重命名项-NewName{$\.Name-replace$pattern,'bar'}-whatif