【问题标题】:Searching Windows directory for a file, only 'n' levels deep from command line在 Windows 目录中搜索文件,仅从命令行深 'n' 级
【发布时间】:2013-11-17 20:50:25
【问题描述】:

在 Windows 7 中,是否可以在目录中搜索文件或模式,但只能搜索“n”级?

我无法安装任何外部工具

Dir /s 命令似乎涵盖了所有可能存在的级别。我想将其限制为仅 'n'(3 或 4)级,但找不到这样做的选项。

【问题讨论】:

标签: search windows-7 directory-structure


【解决方案1】:

是的。我写了一个批处理文件来做这件事:

@echo off
setlocal
set currentLevel=0
set maxLevel=%2
if not defined maxLevel set maxLevel=1

:procFolder
pushd %1 2>nul || exit /b
if %currentLevel% lss %maxLevel% (
  for /d %%F in (*) do (
    echo %%~fF
    set /a currentLevel+=1
    call :procFolder "%%F"
    set /a currentLevel-=1
  )
)
popd

这将列出任意深度的目录。

用法: list.bat “搜索字符串”[数字]

这将搜索字符串 [number] 级别的深度。 (这包括当前级别,因此 2 将搜索当前目录并更深一层)

【讨论】:

  • 嗨,我尝试将它作为“list.bat java 3”和“list.bat .java 3”,但我没有得到任何输出并且脚本退出 - 它返回到命令迅速的。我的 .java 文件位于 0、1 和 2 级(更深,但正在使用 2 或 3 进行测试)
  • 刚刚意识到脚本正在遍历目录,我应该添加逻辑来检查具有特定扩展名的文件或包含给定字符串的文件名
【解决方案2】:

很遗憾没有。默认命令行选项不包括此选项。

【讨论】:

  • 谢谢。是否有任何其他命令可以与此组合来创建一个 .bat 文件让我这样做?
  • 也许treegrep 可以提供帮助。但是,默认情况下,grep 在 Windows 系统上不可用。
猜你喜欢
  • 1970-01-01
  • 2022-12-10
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多