[英]Advice with powershell script syntax
我正在编写一个 powershell 脚本来执行以下操作:
在文件夹Folder > Subfolder1 > Subfolder2
,有 30 多个subfolders.zip
,其中还有另一个包含 200 个 HRML 文件的子文件夹。 我想在 HTML 文件中搜索关键字WTSE
,任何包含此类关键字的文件都将移动到另一个文件夹。
我的脚本目前如下所示:
Get-childitem C:\Users\XXXXX\Desktop\Folder\ -filter *.html -recurse | select-string 'WTSE'|foreach-object -process{move-item} C:\Users\XXXXX\Desktop\Folder2`
您快到了。 问题出在ForEach-Object
之后的部分。
由于您不是使用正则表达式搜索字符串,因此我建议将-SimpleMatch
添加到Select-String
cmdlet。
试试下面:
$sourceFolder = 'C:\Users\XXXXX\Desktop\Folder'
$destination = 'C:\Users\XXXXX\Desktop\Folder2'
(Get-ChildItem -Path $sourceFolder -Filter '*.html' -Recurse | Select-String -Pattern 'WTSE' -SimpleMatch) |
Move-Item -Destination $destination
Move-Item cmdlet 可以采用路径数组,这些路径也可以接受管道输入,因此此处无需使用ForEach-Object
。
注意我在第一部分(Get-ChildItem ... -SimpleMatch)
周围使用括号。 这样可以防止进程因为文件正在使用而无法打开的错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.