Board logo

标题: [求助]比较文件内容 [打印本页]

作者: lbccyxs     时间: 2006-12-2 14:10    标题: [求助]比较文件内容

两个文件,服务器一个,客户机一个,客户机的文件旧了。要替换成新的。现在又不知道那些替换了。我想写一个批处理来解决。怎样写?
我的思路是这样的。
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 服务器文件到客户机,否则,
获得计算机名。将计算机名写回服务器文本文件中,报告已经完成。


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

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

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

PS:想象我以前写过的一段文件名手工排序脚本,10个名称就写了800行(当然大部分是相同的),学了for用法、变量延迟后修改,只有几十行了。
批处理是能简尽量简,利于提高效率。
作者: namejm     时间: 2006-12-3 01:35
Re lbccyxs『第 3 楼』:  

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

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

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

  4、呵呵,xcopy /d 当然是批处理文件里的命令,所谓的批处理,不过是众多命令语句的有机组合而已。如果一句话能搞定的话,没必要再去写其他的命令,语句越多,并不表明越有水平。
作者: vkill     时间: 2006-12-3 02:05
没有看明白
作者: lbccyxs     时间: 2006-12-3 02:20
如果用XCOPY /D 搞得定的话。我肯定不得问你。我就是用XCOPY 搞不定才没办法问这个问题。如果是单独的一台计算机,XCOPY 是可以搞定的,关键是多台同时启动,XCOPY 有些就已经完成 ,有些就不能,而这个批处理就是防止没有成功的补救措施,当然,可能我的思路有问题,你们提供个方案给我考。
        我要求的是多台计算机同时拷贝网络中的一个文件,替换本地的文件,并且确保替换成功。    “开机就自动执行这个命令”
      各位大大,给个方案!!!谢谢了!
作者: namejm     时间: 2006-12-3 02:32
  在单机环境下,xcopy 不能复制的情况在我的机子上也出现过,不过那个文件可能是在别人的机子上加上了用户权限的,在Windows下用右键的复制+粘贴功能也没法成功复制过去。其他还有什么情形用xcopy不能复制的我就不太清楚了,或许xcopy在网络环境下容易出错吧。
作者: vkill     时间: 2006-12-3 02:39
copy 远程机要 有net use 的权限
作者: vkill     时间: 2006-12-3 02:40
net use \\ip\ipc$ pass /u:name &&copy \\ip\c$\test.txt d:\
作者: lbccyxs     时间: 2006-12-3 02:52


  Quote:
Originally posted by namejm at 2006-12-2 01:32 PM:
  在单机环境下,xcopy 不能复制的情况在我的机子上也出现过,不过那个文件可能是在别人的机子上加上了用户权限的,在Windows下用右键的复制+粘蠮..

斑竹你好:
       XCOPY 在网络中是完全可以使用,用户权限也是管理员权限,没有限制,主要是当多台计算机同时启动时,即使开机延时10秒后(确保网络连接)在执行这个XCOPY命令,还是有的计算机可能网络没有响应就强制断开,从而造成拷贝失败。
    这个问题捆绕了我很长的时间了,就是没找到解决的方案,希望斑竹能帮我解决,谢谢了。
作者: bosskof     时间: 2006-12-6 15:50
robocopy 吧
作者: a9319751     时间: 2006-12-7 03:45
xcopy /d/s/e/i/y
可以实现对比更新
作者: a9319751     时间: 2006-12-11 06:57
/V           验证每个新文件。