我看过这个话题:Testing for file attribute in batch file
该脚本适用于%INPUT%中的指定文件夹,但如果我想查看子文件夹,则它不起作用。当我添加建议的/ R标志时,什么也没发生。语法是否正确?
for /R %%F in (%INPUT%) do ( ... )
感谢 斯科特
答案 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”