PowerShell如何搭配-not使用多过滤器实现PDF文件按文件名规则移动
PowerShell文件移动脚本错误说明及修正
错误点
Get-ChildItem的-Filter参数仅支持单条件通配符字符串,你代码中混用了Where-Object的脚本块语法和逻辑运算符,过滤规则完全未生效,因此没有匹配到任何文件,也就没有文件被移动- 字符串包含判断需要明确指定匹配对象和匹配运算符,不能直接将通配符字符串接在逻辑运算符后使用
正确实现代码
移动文件名包含Sold的PDF文件
Get-ChildItem -Recurse -Path $sourcePathPDF -Filter '*.pdf' | Where-Object { $_.Name -like '*Sold*' } | Move-Item -Destination $destinationPathSoldPDF
移动文件名不包含Sold的PDF文件
Get-ChildItem -Recurse -Path $sourcePathPDF -Filter '*.pdf' | Where-Object { $_.Name -notlike '*Sold*' } | Move-Item -Destination $destinationPathPDF
注意事项
- 如果需要不区分大小写匹配
Sold,可以将-like替换为-ilike,-notlike替换为-inotlike - 正式执行移动操作前,可以把管道末尾的
Move-Item替换为Select-Object FullName,先输出匹配到的文件路径,确认过滤规则符合预期后再执行移动,避免误操作
内容的提问来源于stack exchange,提问作者JM1
相关产品推荐
相关产品推荐

