批处理文件:递归检查文件属性

时间:2014-12-05 21:26:41

标签: batch-file

我看过这个话题:Testing for file attribute in batch file

该脚本适用于%INPUT%中的指定文件夹,但如果我想查看子文件夹,则它不起作用。当我添加建议的/ R标志时,什么也没发生。语法是否正确?

for /R %%F in (%INPUT%) do ( ... )

感谢 斯科特

2 个答案:

答案 0 :(得分:0)

您需要在/ R之后立即指定基目录。无论括号中指定的是什么,都将附加到树中的每个子目录中。因此,您可以使用.来获取目录本身:

for /R %INPUT% %%F in (.) do ( ... )

另外,我刚刚发现的一个奇怪的事情是,如果你使用enabledelayedexpansion语法,那么它不起作用;它只执行基本目录的for body,而不是任何子目录。因此,无论是否启用了enabledelayedexpansion,以下内容都不起作用:

for /R !INPUT! %%F in (.) do ( ... )

Dosbatch的另一个怪癖。

修改:要解决您的评论,它与...包含的内容相关。如果要在当前迭代目录和当前迭代目录中包含的文件中获取属性,这应该有效:

for /R %INPUT% %%F in (.) do (attrib %%F& attrib %%F\*)

编辑:这是另一种可能的解决方案,可能会慢一些,但另一方面可能会让代码更容易编写。但另一方面,文件名中的空格会出现问题:

for /f %%i in ('dir /b /s %INPUT%') do (attrib %%i)

答案 1 :(得分:0)

你有没有特别的理由不使用

attrib /s "%input%"

Wheter输入的格式为“c:\ path \ filemask.ext”