gpt4 book ai didi

windows - findstr "^"如何等同于一个空目录?

转载 作者:可可西里 更新时间:2023-11-01 09:50:25 24 4
gpt4 key购买 nike

Windows 中的批处理文件有时会让人感到困惑。怎么办

  findstr "^"

相当于找一个空文件夹,当^表示行首?

for /d /r %1 %%A in (.) do (
dir /ad /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)

取自dbenham's answer

除非我读错了

dir /ad /b "%%~fA" 2>nul

找到空文件夹。

最佳答案

此脚本将获取目录(及其子目录)列表,遍历每个目录以检查子目录,然后仅列出不包含子目录的目录名称。提供的链接中的原始脚本的工作方式类似,只是它只会列出完全 空目录(不包含子目录 文件)。以下是每个代码部分的分割:


您示例中的 for/d 正在获取目录的递归列表:

for /d /r %1 %%A in (.) do ( )
  • for /d遍历指定的目录集
  • for /d /r告诉 for 循环递归到子目录
  • %1 是从命令行指定的可选文件路径
  • %%A 将在每个循环中返回当前目录
  • in (SET) 指定循环遍历的目录集
  • 指定“in (.)”告诉 for 遍历所有目录

for 循环中的代码然后检查每个目录以查看它是否为空*:

  dir /ad /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
  • dir /ad /b "PATH" 获取指定路径下的子目录列表*
  • %%~fA ”将当前目录名扩展为其完整路径
  • 2>nul 通过将 STDERR 重定向到 nul 来隐藏任何 dir 错误
  • | dir 找到的子目录列表通过管道传输到 findstr
  • findstr "^" 然后检查子目录的非空列表
  • >nul 通过将所有输出重定向到 nul 来隐藏 findstr 结果
  • || 如果前一个命令失败(没有 findstr 结果)则运行命令
  • echo %%~fA 如果没有找到子目录则返回目录名*

*请注意:如 LotPings 所述,您提供的代码将产生与您链接到的示例不同的结果。 dir/a/b 列出所有文件和目录,而 dir/ad/b 仅列出目录。这意味着您的脚本将列出所有不包含子目录(但可能仍包含文件)的目录。如果这是预期的行为,请忽略此说明。

编辑:根据 Ben Voigt 的建议进一步分解上述命令列表。

关于windows - findstr "^"如何等同于一个空目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com