PowerShell如何仅匹配文件夹名称开头的指定关键词完成复制
PowerShell复制名称以指定关键词开头文件夹的修改方案
核心修改逻辑
你当前脚本的匹配规则问题出在通配符的使用上:
- 原有
$include= @("*Test*")中,关键词Test前后的*通配符代表匹配任意位置的内容,所以只要名称中包含Test的对象都会被命中 - 要实现仅匹配名称以关键词开头的规则,只需要去掉关键词前的
*,将通配符改为Test*即可
可选优化
如果明确只需要复制文件夹、不需要匹配同名开头的文件,可以在Get-ChildItem参数中添加-Directory,避免误复制文件,提升脚本准确性。
修改后完整脚本
# 请先补全你的源目录路径 $source = "替换为你的实际源目录路径" $dest = "D:\2"; $include= @("Test*") Get-ChildItem $source -Recurse -Force -Verbose -Include $include -Directory | Copy-Item -Destination {Join-Path $dest $_.FullName.Substring($source.length)}
拓展说明
如果需要动态指定匹配关键词,可以将关键词抽为变量,写法如下:
$matchKeyword = "Test" $include = @("${matchKeyword}*")
内容的提问来源于stack exchange,提问作者firekid2018
相关产品推荐
相关产品推荐

