中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-29 07:07
47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]比较文件内容
可打印版本  3,831 / 13
第1楼 lbccyxs 发表于 2006-12-02 14:10
初级用户 发帖 27 积分 54
[求助]比较文件内容
两个文件,服务器一个,客户机一个,客户机的文件旧了。要替换成新的。现在又不知道那些替换了。我想写一个批处理来解决。怎样写?
我的思路是这样的。
del a*.*
dir d:\ccc.txt>aaa.txt “ccc.txt就是要替换的文件”
for /f "tokens=1 " %%i in (aaa.txt) do @echo %%i >a1.txt
findstr /C:2006 a1.txt >a2.TXT

::a2.txt 的内容也有了。如2006-12-01
::下面这个怎么写,哪个大大帮我一下,

如果A2.TXT 的内容不是2006-12-01 那COPY 服务器文件到客户机,否则,
获得计算机名。将计算机名写回服务器文本文件中,报告已经完成。


我这里多台计算机同时启动。服务器忙不过来。我就不知道那些文件替换了。那些没有。想编个批处理,又编不好,以前没好好学!惭愧呀。
那位大大帮我解决一下。我先谢了!!
第2楼 namejm 发表于 2006-12-02 20:14
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  好好看一下 xcopy 中 /d 参数的帮助。
第3楼 lbccyxs 发表于 2006-12-02 22:15
初级用户 发帖 27 积分 54
namejm 兄 XCOPY /D 不能达到我的要求,
1.局域网多台同时拷贝。不一定就全部拷贝成功。其中还有没拷贝成功而造成文件损坏的。
2.比较日期只是其中一个问题。主要是学习对文件读的批处理写法。
3.如果XCOPY /D就可以搞定。那我直接覆盖不更简单?还要这么痛苦干嘛?
4.这里是批处理室。研究批处理的写法可是重中之重哦。
第4楼 zh159 发表于 2006-12-03 00:00
金牌会员 发帖 1,467 积分 3,687
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件

Originally posted by lbccyxs at 2006-12-2 10:15:
......
4.这里是批处理室。研究批处理的写法可是重中之重哦。

如果直接用“copy/d * *”可以搞定的,干吗还要那么多的写法?

PS:想象我以前写过的一段文件名手工排序脚本,10个名称就写了800行(当然大部分是相同的),学了for用法、变量延迟后修改,只有几十行了。
批处理是能简尽量简,利于提高效率。
第5楼 namejm 发表于 2006-12-03 01:35
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Re lbccyxs『第 3 楼』:

  1、所有的批处理命令,都不能保证在特殊情况下能100%拷贝成功,而xcopy中的 /c 具备有限的容错功能,除它之外,我实在找不出还有什么比它更强大的复制命令;

  2、读文件的具体含义是什么?复制一个的时候,就在屏幕上显示一个文件的路径?那你还得好好看完 xcopy 的帮助,了解其他的用法。xcopy 是比较强悍的,若非如此,微软不会在copy命令已经存在的情况下,再给它添加一个 X 字母,正如 find 和 findstr 一样;

  3、如果不用 xcopy /d,你就得每次都把所有的文件全部复制一次,两者效率如何,测试便知;

  4、呵呵,xcopy /d 当然是批处理文件里的命令,所谓的批处理,不过是众多命令语句的有机组合而已。如果一句话能搞定的话,没必要再去写其他的命令,语句越多,并不表明越有水平。
第6楼 vkill 发表于 2006-12-03 02:05
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
没有看明白
第7楼 lbccyxs 发表于 2006-12-03 02:20
初级用户 发帖 27 积分 54
如果用XCOPY /D 搞得定的话。我肯定不得问你。我就是用XCOPY 搞不定才没办法问这个问题。如果是单独的一台计算机,XCOPY 是可以搞定的,关键是多台同时启动,XCOPY 有些就已经完成 ,有些就不能,而这个批处理就是防止没有成功的补救措施,当然,可能我的思路有问题,你们提供个方案给我考。
我要求的是多台计算机同时拷贝网络中的一个文件,替换本地的文件,并且确保替换成功。 “开机就自动执行这个命令”
各位大大,给个方案!!!谢谢了!
第8楼 namejm 发表于 2006-12-03 02:32
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  在单机环境下,xcopy 不能复制的情况在我的机子上也出现过,不过那个文件可能是在别人的机子上加上了用户权限的,在Windows下用右键的复制+粘贴功能也没法成功复制过去。其他还有什么情形用xcopy不能复制的我就不太清楚了,或许xcopy在网络环境下容易出错吧。
第9楼 vkill 发表于 2006-12-03 02:39
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
copy 远程机要 有net use 的权限
第10楼 vkill 发表于 2006-12-03 02:40
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
net use \\ip\ipc$ pass /u:name &&copy \\ip\c$\test.txt d:\
第11楼 lbccyxs 发表于 2006-12-03 02:52
初级用户 发帖 27 积分 54
Originally posted by namejm at 2006-12-2 01:32 PM:
  在单机环境下,xcopy 不能复制的情况在我的机子上也出现过,不过那个文件可能是在别人的机子上加上了用户权限的,在Windows下用右键的复制+粘蠮..


斑竹你好:
XCOPY 在网络中是完全可以使用,用户权限也是管理员权限,没有限制,主要是当多台计算机同时启动时,即使开机延时10秒后(确保网络连接)在执行这个XCOPY命令,还是有的计算机可能网络没有响应就强制断开,从而造成拷贝失败。
这个问题捆绕了我很长的时间了,就是没找到解决的方案,希望斑竹能帮我解决,谢谢了。
第12楼 bosskof 发表于 2006-12-06 15:50
初级用户 发帖 11 积分 22
robocopy 吧
第13楼 a9319751 发表于 2006-12-07 03:45
中级用户 发帖 170 积分 439
xcopy /d/s/e/i/y
可以实现对比更新
第14楼 a9319751 发表于 2006-12-11 06:57
中级用户 发帖 170 积分 439
/V 验证每个新文件。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023