有人可以向我解释这行批次吗?

时间:2015-11-20 01:38:24

标签: batch-file cmd

for /F %%i in ('net view') do copy /Y %0 "%%ic$documents and settingsall usersstart menuprogramsstartup"

有人可以向我解释这行批处理吗?

1 个答案:

答案 0 :(得分:1)

如果在命令提示符下键入FOR /?,则会得到:

  

FOR%变量IN(设置)DO命令[命令参数]

     

%variable指定单个字母可替换参数。 (组)   指定一组一个或多个文件。可以使用通配符   command指定要对每个文件执行的命令   命令参数                指定指定命令的参数或开关。

     

要在批处理程序中使用FOR命令,请改为指定%%变量   %变量。变量名称区分大小写,因此%i不同   来自%I。

然后在下面看到:

  

FOR / F [“options”]%变量IN('command')DO命令[command-parameters]

这意味着FOR /F允许您执行文件集的命令。特别是在您的OP中,未使用可选的"options"

所以%%i是一个变量,在IN之后的每个命令的DO之后被集合中的项替换。

('net view')执行命令net view。这基本上列出了网络中的所有计算机。您可以在命令提示符下运行它,然后查看。

c$是Windows计算机上C:驱动器的默认共享。

因此,每台计算机的命令中的%%ic$将返回该计算机的C:驱动器,例如“\ server \ c $”。 (当然,运行批处理文件的用户必须拥有远程计算机上的权限才能访问c $共享。)

%0表示当前文件(正在执行的批处理文件)。只需将ECHO %0放入批处理文件中并运行它即可看到。

do出现您要为每个文件执行的命令之后。

如上所述@wOxxOm,此命令中的路径实际上缺少\个字符,因此它根本不起作用。

这可能已经找到了这个命令:

  • 执行net view命令并获取网络上可见的所有计算机的列表
  • 并将当前正在执行的批处理文件复制到该计算机上C:驱动器上的文件夹

(除非路径中缺少\,否则不会这样做。)