You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归处理含隐藏文件的Exe命令问题:Get-ChildItem对隐藏文件无效

解决PowerShell递归处理所有文件(含隐藏文件)的attrib命令问题

我懂你的困扰——用Get-ChildItem -Recurse | foreach {attrib.exe -s -h $_.FullName}处理不了隐藏文件,但直接用attrib.exe -s -h '.\path\*'却能生效,核心原因其实很简单:默认的Get-ChildItem不会抓取隐藏的文件和目录,你的循环根本没遍历到那些隐藏项,自然看不到效果。

下面给你两个靠谱的解决方案:

方案1:让Get-ChildItem获取所有项(包括隐藏/系统项)

给Get-ChildItem加上-Force参数,它就会返回所有文件和目录(包含隐藏、系统属性的项),再结合循环调用attrib就能搞定:

Get-ChildItem -Recurse -Force | ForEach-Object { attrib.exe -s -h $_.FullName }
  • -Force的作用:强制显示通常被隐藏的项目(比如隐藏文件、系统文件、隐藏目录),确保你的循环能覆盖到所有目标。

方案2:结合目录遍历+attrib通配符批量处理

既然你发现attrib.exe配合通配符*能处理目录下所有文件,那可以递归遍历所有目录,对每个目录执行一次带通配符的attrib命令:

# 处理所有目录下的文件(包括隐藏文件)
Get-ChildItem -Recurse -Force -Directory | ForEach-Object { attrib.exe -s -h "$($_.FullName)\*" }

# 如果还需要处理目录本身,再加这一行
Get-ChildItem -Recurse -Force -Directory | ForEach-Object { attrib.exe -s -h $_.FullName }

这种方式的优势是减少attrib的调用次数,效率更高,尤其是在文件数量很多的时候。

验证小技巧

你可以先单独运行Get-ChildItem -Recurse -Force,看看输出结果里是否包含了那些之前看不到的隐藏文件/目录,确认没问题后再执行attrib命令,这样能提前排查遍历范围的问题。

内容的提问来源于stack exchange,提问作者Bad_ptr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:12:34