我需要在目录结构中搜索以句点开头的所有文件(不要问...)并将它们从只读更改为rw。我可以使用第一个命令识别这些文件,但是如何将其转换为第二个命令?
dir .*.* /s /a-D /ar
现在我想获取该输出并运行attrib + r。这就是我所得到的,但它没有用。
for /f %f in ('dir .*.* /s /a-D /ar') DO "ATTRIB +R" "%G"
我认为我很接近,但DOS批处理命令从未像我期望的那样工作(我的问题,不是DOS的)
答案 0 :(得分:2)
它不起作用的原因是因为attrib +r
使处理过的令牌再次成为只读,并且因为你使用大写字母%G,你应该使用小写字母。
在Windows中,只读文件与Linux的不同之处在于您将文件标记为只读文件。 如果它不是只读的,它将使用ACL中为文件夹/文件找到的属性。 通常它会生成文件RW而不是只读。
您可以在此处详细了解:
http://msdn.microsoft.com/en-us/magazine/cc982153.aspx
所以对于你的问题:
for /f %f in ('dir .*.* /s /a-D /ar') DO "ATTRIB -R" "%g"
(因为我没有任何前缀的文件或文件夹。我无法测试并查看上述是否有效,您可能需要使用%f而不是%g,具体取决于您要使用的令牌。)
以上将执行attrib -r
删除只读属性。
您可能希望将double %%用于要作为.bat,.cmd等执行的批处理脚本。
如for /?
帮助屏幕中所述:
“要在批处理程序中使用FOR命令,请改为指定%%变量 %变量。“
更多:
“变量名称区分大小写,因此%i与%I不同。”