用批处理实现向局域网内多台机器中复制文件(转载)
总公司用Email的方式传过来一个“edp.exe”文件,要求对收银电脑进行升级。方法是覆盖掉所有收银POS机中“c:\pos”下的同名文件。
我部收银电脑有五十多台,全部安装Windows2000 Pro版。如果用手工复制的方式,相当麻烦。经过摸索发现用批处理可以实现批量复制。方法如下:
一、使用此方法的前提条件有以下几点:
1、所有的收银电脑在同一个网段;
2、所有的收银电脑的IP地址是顺序且规则的。如我处的收银电脑的IP地址分别为192.168.6.101-192.168.6.138、192.168.6.151-192.168.6.155、192.168.6.161、192.168.6.163-192.168.6.168;
3、每台收银电脑都是相同的登录名和相同的登录密码,此例中用户名为edp,密码为空
4、每台收银电脑都开通的默认共享c$(因为此处我们的操作仅涉及c$),如果没有开通,可以通过修改注册表的方式来开通。具体方法在注册表编辑器regedit中删除掉“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\LanmanServer\Parameters”中的“AutoShareWks”子键,然后重启电脑。(该方法仅针对Windows2000 Pro版)
二、编辑批处理文件
我们先新建一个文件夹“C:\EDP”,然后将需要复制到其他机台上的文件复制到该文件夹下,此处是“edp.exe”文件。
然后在该文件夹下新建一个文本文件,然后将扩展名改为“.bat”,比如“copyedp.bat”。
在该文本文件添加以下内容并保存:
@echo off
for /L %%A in (101,1,138) do net use \\192.168.6.%%A\c$ "" /user:"edp"
for /L %%B in (151,1,155) do net use \\192.168.6.%%B\c$ "" /user:"edp"
net user \\192.168.6.161\c$ "" /user:"edp"
for /L %%C in (163,1,168) do net use \\192.168.6.%%C\c$ "" /user:"edp"
rem 以上指令是的目的是与目标机器建立连接
for /L $$D in (101,1,138) do copy/y c:\edp\edp.exe \\192.168.6.%%D\c$\pos\
for /L $$E in (151,1,155) do copy/y c:\edp\edp.exe \\192.168.6.%%E\c$\pos\
copy/y c:\edp\edp.exe \\192.168.6.161\c$\pos\
for /L %%F in (163,1,168) do copy/y c:\edp\edp.exe \\192.168.6.%%F\c$\pos\
rem 以上指令是将文件复制到目标机器。
做完以上工作的,只需要双击该文件,即可实现将相应文件复制到目标机器相应文件夹下的功能。
这儿需要注意的有以下几点:
1、该批处理中我们用到了循环语句“for”,对该命令不熟悉的朋友可以通过在“开始菜单-运行”中输入“cmd”,然后输入“help for”指令来查看关于该命令的帮助;
2、%%符号后面的字母要区分大小写,即%%a不等同于%%A;
3、“copy”命令加上“/y”参数的目的是不询问直接覆盖目标文件。