【发布时间】:2011-12-15 14:00:36
【问题描述】:
我想创建一个批处理文件,可以对当前目录中的所有文件夹执行某些操作。但我发现使用这种语法
for /d %%i in (*) do echo %%i
它找不到隐藏文件。 那么是否需要添加任何其他语法?
【问题讨论】:
标签: command-line batch-file window
我想创建一个批处理文件,可以对当前目录中的所有文件夹执行某些操作。但我发现使用这种语法
for /d %%i in (*) do echo %%i
它找不到隐藏文件。 那么是否需要添加任何其他语法?
【问题讨论】:
标签: command-line batch-file window
不确定是否可以采取任何措施来修复FOR /D 的行为,但您可以使用不同的方法。您可以在FOR /F 循环中使用DIR 的输出。
现在DIR 命令接受参数,这允许您获得必要的输出。特别是,您可以指示 DIR 仅显示隐藏目录的名称 (/ADH),而无需其他信息,如日期和时间和摘要 (/B)。在命令提示符处运行DIR /? 或HELP DIR 以获取更多信息。
因此,您的循环可能如下所示:
FOR /F "delims=" %%D IN ('DIR /ADH /B') DO ECHO %%D
FOR /F 循环的delims 选项指示循环消耗DIR 输出的整行,而不是读取到第一个空格,这是默认行为。您可以在命令提示符处调用FOR 上的帮助了解更多信息:FOR /? 或HELP FOR。
【讨论】:
"delims=",并且在输出中有一个类似Program Files的名字,那么%%D变量将被赋值为Program,而不是@ 987654341@,因为默认情况下,该行被读取到第一个空格字符。指定"delims=" 会导致整个行被读取。或者,可以使用"tokens=*" 而不是"delims=" 来实现相同的效果。