我正在使用脚本将文件从一个目录移动到另一个目录。它还通过一些RegEx工作剥离了一些文本。但是,尽管我的脚本比较短,但我认为我仍然可以做得更好。以下是我的示例脚本。
$Source = "C:\temp\test\source"
$Dest = "C:\temp\test\dest"
get-childitem $Source\*.* | rename-item -newname {$_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.',''} -WhatIf
move-item $Source\*.* $Dest -WhatIf
现在,这可以工作,但是,正如您所看到的,这是两行,我很确定它可以在一行中完成。我认为我从
move-item
命令中“赚不到我的钱”。我将如何完成此任务而不必执行单独的rename-item
命令?如果您需要更多信息,请告诉我,我会解决的。我是PS和RegEx的新手。我处理批处理文件更多,但我认为它不能处理RegEx。这就是为什么我尝试PS。
最佳答案
您可以在Move-Item cmdlet的目标参数上使用正则表达式替换。那应该为您完成工作。调整您的示例:
$Source = "C:\temp\test\source"
$Dest = "C:\temp\test\dest"
get-childitem $Source | Foreach-Object {
Move-Item -Path $_.FullName -Destination "$Dest\$($_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.','')" -WhatIf
}
关于regex - 重命名文件时使用Move-Item,并使用正则表达式 “cleaning”文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843926/