2014-12-05 88 views

回答

0

您需要在/ R后,立即指定的基本目录。无论在括号中指定什么,都会附加到树中的每个子目录。所以,你可以使用.得到目录本身:

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

另外,我刚刚发现了一个奇怪的是,如果你使用enabledelayedexpansion语法,那么它不工作;它只执行基本目录的for主体,而不是任何子目录。因此,以下方法无效,无论您是否启用了delayedexpansion:

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) 
+0

谢谢,但没有不工作。它显示主目录和子目录的读/写属性,但不显示文件。 是的,我有enabledelayedexpansion设置...哪(老实说)我不熟悉。 – 2014-12-05 22:03:19

+0

也许我的套装是错的?设置INPUT = C:\ Filenet \ Work \ Current \ IDCMS1 \ IM \ Cloud \ Services \ Cloudant在末尾添加\\ *什么也不做。 – 2014-12-05 22:07:38

+0

让我知道这些解决方案是否适合您。 – bgoldst 2014-12-05 22:55:01

0

有什么特别的原因,你不使用

attrib /s "%input%" 

Wheter输入的格式为“C:\路径\ filemask.ext“

+0

是的原因是我想要一些条件处理。如果attrib是读写的,我想要GOTO:批处理的其他部分。 – 2014-12-08 23:12:44