2015-11-20 137 views
1
for /F %%i in ('net view') do copy /Y %0 "%%ic$documents and settingsall usersstart menuprogramsstartup" 

有人可以解释这一批批给我吗?有人可以解释这一批批给我吗?

+0

你有试过Google吗? http://ss64.com/nt/for_f.html – jack3694078

+0

批处理文件正在将其自身复制到net view命令查找到的每台计算机。一种自我传播的蠕虫。 – Squashman

+0

“%% ic $ documents and settingsall usersstart menuprogramsstartup”这行代码是什么引用的?什么目录? –

回答

1

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

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

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

要在批处理程序中使用FOR命令,请指定变量%%变量%。变量名称区分大小写,所以%i与%I的 不同。

然后下面你看到这一点:

FOR/F [ “选项”]%IN( '命令')可变DO命令[命令参数]

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

因此%%i是一个变量,被DO后面的每个命令的IN之后的集合中的项取代。

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

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

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

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

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

如上面@wOxxOm指出的那样,此命令中的路径实际上缺少\字符,所以它根本不起作用。

有了这个可能已经想通了,这个命令:

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

(除了它不会与\■从路径缺少做到这一点。)

相关问题