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

时间:2014-08-20 17:33:49

标签: powershell powershell-v2.0

我需要在文件名中替换不同的字符串。有没有办法在Powershell中使用find replace函数修改文件名?

我已经在.bat文件中完成了这项工作,但是要在PS中完成此操作。

1 个答案:

答案 0 :(得分:2)

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

$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将被视为正则表达式,因此如果需要捕获它们,请转义特殊字符。