You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

文件系统非递归搜索问题:PowerShell脚本未按预期限制搜索范围

解决PowerShell仅搜索父目录CSV文件、忽略子目录的问题

嘿,我一眼就发现你脚本里的问题了——你把"*.csv"当成第二个路径参数传给Get-ChildItem了,而不是用来筛选当前目录下的文件。这就导致哪怕加了-Depth 0,命令的行为也完全不符合预期。

修正后的脚本(推荐方案)

-Filter参数指定CSV文件类型是最高效的方式,因为过滤器会直接在文件系统层面生效,减少PowerShell后续的处理开销:

Get-ChildItem -File -Path "\\flamingdev\files\inbound\" -Filter "*.csv" -Depth 0 | 
  Select-Object -ExpandProperty FullName | 
  Add-Content -Path "\\flamingdev\files\input\files.txt"

为什么原来的脚本不行?

你原来的写法-Path "\\flamingdev\files\inbound\","*.csv"会让PowerShell把"*.csv"当作一个独立的路径去解析。它会先搜索\\flamingdev\files\inbound\下的内容,然后再尝试找名为*.csv的路径(显然不存在),这种混乱的参数传递直接打乱了-Depth 0的作用逻辑,导致命令意外遍历了子目录。

另一种灵活的方案(适合多扩展名筛选)

如果以后你需要同时筛选多种文件类型(比如.csv.txt),可以用-Include参数,但要注意把路径写成"\\flamingdev\files\inbound\*"(表示目录下的所有项),再搭配-Depth 0

Get-ChildItem -File -Path "\\flamingdev\files\inbound\*" -Include "*.csv" -Depth 0 | 
  Select-Object -ExpandProperty FullName | 
  Add-Content -Path "\\flamingdev\files\input\files.txt"

这样写之后,-Depth 0就会正确限制命令只搜索\\flamingdev\files\inbound\的直接子项(也就是父目录下的文件),完全忽略所有子目录。

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

火山引擎 最新活动