PowerShell脚本如何获取指定多扩展名文件的逗号分隔列表?
解决PowerShell中Get-ChildItem指定多扩展名的问题
问题原因
-Filter参数仅支持单个通配符模式,没法直接传入多个扩展名集合,所以你之前尝试的(*.js , *.css)这类写法会失效。
可行解决方案
方案1:使用-Include参数
-Include支持传入多个通配符字符串数组,结合-Recurse即可筛选多扩展名文件:
# 定义要筛选的扩展名集合 $targetExtensions = @('*.js', '*.css') # 获取指定扩展名的文件名并拼接为逗号分隔字符串 $Files_List = (Get-ChildItem -Path .\All_Subfolders\Subfolder_1\ -File -Recurse -Include $targetExtensions -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Name) -join ','
注:如果不需要递归遍历子文件夹,可将路径改为
.All_Subfolders\Subfolder_1\*,同时去掉-Recurse参数,确保-Include能生效。
方案2:使用Where-Object过滤
如果需要更灵活的筛选逻辑,可先获取所有文件,再通过扩展名属性过滤:
# 定义允许的扩展名(注意带英文点号) $allowedExtensions = @('.js', '.css') $Files_List = (Get-ChildItem -Path .\All_Subfolders\Subfolder_1\ -File -Recurse -ErrorAction SilentlyContinue | Where-Object { $allowedExtensions -contains $_.Extension } | Select-Object -ExpandProperty Name) -join ','
另外,你原来的子文件夹列表写法没问题,也可以换成更规范的写法:
$Folders_List = (Get-ChildItem ./All_Subfolders/ -Directory | Select-Object -ExpandProperty Name) -join ','
内容的提问来源于stack exchange,提问作者FDavidov
相关产品推荐
相关产品推荐

