标题: [求助]如何在局域内使用XCOPY更新文件,谢谢!
[打印本页]
作者: never10
时间: 2008-9-2 17:10
标题: [求助]如何在局域内使用XCOPY更新文件,谢谢!
求助用XCOPY做软件更新。
我要更新一个文件。要把局域网内的若干台机器C盘中的一个a.exe 与a.mdb覆盖。但是其中机器名与IP地址均不连续。
我尝试写了一个 /y/u 参数只在有同名文件时才覆盖,这样扫描所有机器。在命令行中可实现。但在批处理中如果没有同名文件不知到为什么就会提示写入文件或文件夹。
我又试一次写了把每个IP赋给一个 IP* 然后把 \\%ip*%\c$\ 更新。但是不知如何去循环。
先感谢每位帮忙的朋友。谢谢。
作者: HAT
时间: 2008-9-2 17:23
假设所有的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$\"
)
作者: dato
时间: 2008-9-2 18:26
以前有位朋友发表了一个代码,不过搜不到原链接,你可以尝试修改一下,主要是网段部分的修改和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
作者: never10
时间: 2008-9-3 08:42
@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 个文件
按任意键退出
如果原来是没有这个文件的也会写入文件。有办法忽略吗?
作者: terse
时间: 2008-9-3 11:09
怎么我这里用xcopy命令 没上面提示
楼主要是更新的话 可以试试 replace "a.exe" "\\IP\C$"
作者: never10
时间: 2008-9-3 17:51
标题: 非常感谢各位。
主要是以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
非常感谢各位。