我有迷你递归功能,它可以查找和隐藏所有.mta文件。它看起来像遇到问题.bat文件
For /r %1 in (*.mta) do attrib +h "%1"
当我试图从命令提示符下执行它手动,它工作正常
我.bat文件创建。代码看起来像
D:
For /r %1 in (*.mta) do attrib +h "%1"
pause
试图执行此文件。刚开了这个画面
有什么不好的代码?
我有迷你递归功能,它可以查找和隐藏所有.mta文件。它看起来像遇到问题.bat文件
For /r %1 in (*.mta) do attrib +h "%1"
当我试图从命令提示符下执行它手动,它工作正常
我.bat文件创建。代码看起来像
D:
For /r %1 in (*.mta) do attrib +h "%1"
pause
试图执行此文件。刚开了这个画面
有什么不好的代码?
与尝试:
For /r %%i in (*.mta) do attrib +h "%%i"
(名称为您的文件.cmd
,它看起来更加现代。)
不要使用%1
,这是指你的脚本的参数,所以它will not work。在命令行中使用%
,在批处理脚本中使用%%
。
%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"
这也是不正确的。
使用f,它给出的命令的消息sytax是不正确的http:// prntscr。 com/3s0t3 –
正如Mat提到的,%1可能会混淆,但它也是合法的循环变量,唯一的问题是缺少第二个百分比 – jeb
一般来说,这个链接对于这些问题非常有用:http://ss64.com/nt/syntax-args.html – morechilli