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

PowerShell ForEach循环异常:生成.hidden文件脚本无法正常运行

解决双系统共享目录生成.hidden文件的PowerShell脚本问题

原脚本的问题分析

原脚本的核心问题是输出路径错误:

  • Out-File '.hidden'使用相对路径时,默认指向脚本运行的当前工作目录,而非正在遍历的子目录。
  • 每次循环都会覆盖顶层目录的.hidden文件,若最后遍历的目录无隐藏项,最终顶层的.hidden就会变成空文件,其他子目录根本不会生成自己的.hidden文件。

修正后的脚本

$targetRoot = $args[0]

# 遍历所有子目录,生成对应目录的.hidden文件
Get-ChildItem -Path $targetRoot -Directory -Recurse -Force | ForEach-Object {
    # 拼接当前子目录下.hidden的完整路径
    $hiddenFile = Join-Path -Path $_.FullName -ChildPath '.hidden'
    # 获取当前目录下的隐藏项(文件/文件夹),输出名称到.hidden,用UTF-8编码适配Linux
    Get-ChildItem -Path $_.FullName -Hidden -Force -Name | Out-File -Path $hiddenFile -Encoding utf8
}

# 处理目标根目录本身(如果需要为顶层目录生成.hidden)
$topHiddenFile = Join-Path -Path $targetRoot -ChildPath '.hidden'
Get-ChildItem -Path $targetRoot -Hidden -Force -Name | Out-File -Path $topHiddenFile -Encoding utf8

关键修改点

  • 用Join-Path生成每个子目录下.hidden的完整路径,确保每个目录都生成自己的配置文件。
  • 添加-Encoding utf8参数,保证文件编码适配Linux环境,避免识别异常。
  • 单独补充了目标根目录的处理逻辑(原脚本未覆盖顶层目录),可根据需求选择保留或删除。

使用说明

运行脚本时传入共享目录的路径即可,例如:

.\Generate-HiddenFiles.ps1 "D:\MySharedFolder"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:00:55