2011-10-31 97 views
2

我有迷你递归功能,它可以查找和隐藏所有.mta文件。它看起来像遇到问题.bat文件

For /r %1 in (*.mta) do attrib +h "%1" 

当我试图从命令提示符下执行它手动,它工作正常

enter image description here

我.bat文件创建。代码看起来像

D: 
For /r %1 in (*.mta) do attrib +h "%1" 
pause 

试图执行此文件。刚开了这个画面

enter image description here

有什么不好的代码?

+0

一般来说,这个链接对于这些问题非常有用:http://ss64.com/nt/syntax-args.html – morechilli

回答

4

与尝试:

For /r %%i in (*.mta) do attrib +h "%%i" 

(名称为您的文件.cmd,它看起来更加现代。)

不要使用%1,这是指你的脚本的参数,所以它will not work。在命令行中使用%,在批处理脚本中使用%%

0

%1是传递给批处理文件的命令行参数,在这种情况下恰好为空。这意味着您的for循环语法不正确。使用一些其他的变量名称,而不是像%F:

for /r %f in (*.mta) do attrib +h "%f" 

如果你想用你的版本,不要这样:

c:\> yourbatch.bat f 

然后%F就已经扩大到只是“f”和你'd得到:

for /r f in (*.mta) do attrib +h "f" 

这也是不正确的。

+0

使用f,它给出的命令的消息sytax是不正确的http:// prntscr。 com/3s0t3 –

+0

正如Mat提到的,%1可能会混淆,但它也是合法的循环变量,唯一的问题是缺少第二个百分比 – jeb