中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何在局域内使用XCOPY更新文件,谢谢!
作者:
标题: [求助]如何在局域内使用XCOPY更新文件,谢谢! 上一主题 | 下一主题
never10
新手上路





积分 8
发帖 3
注册 2008-9-2
状态 离线
『楼 主』:  [求助]如何在局域内使用XCOPY更新文件,谢谢!

求助用XCOPY做软件更新。
我要更新一个文件。要把局域网内的若干台机器C盘中的一个a.exe 与a.mdb覆盖。但是其中机器名与IP地址均不连续。
我尝试写了一个  /y/u 参数只在有同名文件时才覆盖,这样扫描所有机器。在命令行中可实现。但在批处理中如果没有同名文件不知到为什么就会提示写入文件或文件夹。
我又试一次写了把每个IP赋给一个 IP* 然后把 \\%ip*%\c$\ 更新。但是不知如何去循环。
先感谢每位帮忙的朋友。谢谢。

2008-9-2 17:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

假设所有的IP地址都存放在iplist.txt文件里面
@echo off
for /f "tokens=*" %%a in (iplist.txt) do (
  echo xopy /y /u "a.exe" "\\%%a\C$\"
  echo xopy /y /u "a.mdb" "\\%%a\C$\"
)




2008-9-2 17:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 3 楼』:  

以前有位朋友发表了一个代码,不过搜不到原链接,你可以尝试修改一下,主要是网段部分的修改和xcopy参数的测试,
@echo off
::echo 将要复制的文件拖放到这个批处理上即可。
ipconfig /all |find /i "ip address" || (echo 没有连网,按任意键程序退出 & pause>nul & exit)
for /f "tokens=15" %%i in ('ipconfig /all^|find /i "ip address"') do (
     for /f "tokens=1-3 delims=." %%a in ("%%i") do (
           if %%a EQU 218 (
           for /l %%e in (218,1,220) do (
                ping %%a.%%b.%%c.%%e -n 1 -l 1 -w 1 &&(
                for /f "skip=7 eol=命" %%t in ('net view \\%%a.%%b.%%c.%%e') do (
                     if "%%t" EQU "SAV" (
                     net use \\%%a.%%b.%%c.%%e\%%t /u:administrator &&  xcopy %1 /t \\%%a.%%b.%%c.%%e\%%t
                     ))
                  ))
             ))
      )
pause




http://dato.ys168.com
google search bot
http://dato.minidns.net/
2008-9-2 18:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
never10
新手上路





积分 8
发帖 3
注册 2008-9-2
状态 离线
『第 4 楼』:  

@echo off
del \\IP\C$\Documents and Settings\a.mdb /f/s/q/a
xcopy /y /u a.exe \\IP\C$\
xcopy /y /u a.mdb \\IP\C$\
echo 按任意键退出
pause>nul
exit
得到的结果如下:
找不到 C:\Documents and Settings\mm.mdb
目标 C:\a.exe 是文件名
还是目录名
(F = 文件,D = 目录)? f
a.exe
复制了 1 个文件
目标 C:\a.mdb 是文件名
还是目录名
(F = 文件,D = 目录)? f
a.mdb
复制了 1 个文件
按任意键退出
如果原来是没有这个文件的也会写入文件。有办法忽略吗?

2008-9-3 08:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 5 楼』:  

怎么我这里用xcopy命令 没上面提示
楼主要是更新的话 可以试试  replace "a.exe" "\\IP\C$"



简单!简单!再简单!
2008-9-3 11:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
never10
新手上路





积分 8
发帖 3
注册 2008-9-2
状态 离线
『第 6 楼』:  非常感谢各位。

主要是以1楼的网友为蓝本
for /f "tokens=*" %%a in (iplist.txt) do (
del \\%%a\c$\"Documents and Settings"\a.mdb /s/q/f/a  ***这里的用户文档不知到为什么要为“引号“,开始时不用的正常,但合来会出现找不到路径。加了”引号“就没有问题了。***
xcopy /u /y "a.exe" "\\%%a\c$\a\"  ***这里因为定义了目标文件名,造成要提示***
xcopy /u /y "a.mdb" "\\%%a\c$\a\"
)
但有一具缺点就是(del \\%%a\c$\"Documents and Settings"\a.mdb) 很慢但是没上域不能用策略。只凑和着用了。
另附上一个开机的批处理(在域中通过策略使用)。留意源权限与用户的设置。先要自己在管理员调试一下。
@echo off
del c:\Documents and Settings\mm.mdb /f/s/q/a
xcopy \\a\a.exe C:\a\ /y /u
xcopy \\a\a.mdb C:\a\ /y /u
echo 已更新按任意键退出
pause>nul
exit
非常感谢各位。

2008-9-3 17:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: