我正在使用脚本将文件从一个目录移动到另一个目录。它还通过一些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的原因。
答案 0 :(得分:5)
您可以在Move-Item cmdlet的destination参数上使用正则表达式替换。那应该为你做的工作。调整你的例子:
$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
}