张云帆 360:COPY问题(高手请帮忙)

来源:百度文库 编辑:高校问答 时间:2024/04/30 03:09:02
问题是这样的:
假设我有C,D两个盘,C盘中有个test目录,并且每天目录中的文件都不断增加或者删除;D盘中也有一个TEST目录,我想通过一个批处理命令让D盘test中的文件根据C盘TEST中的文件更新,我用的是COPY命令,可以实现,但是我想让复制过程中不覆盖D中已经有的文件,因为这样会浪费时间并且对硬盘会有损害,大家有好办法么?另外,我这个批处理是想定期执行的,目前是想用WINDOWS自带的任务计划来做.最好不要用一些功能软件来实现,只用WINDOWS自带的命令.我的机器是WIN2000 ADV SERVER.谢谢
回一楼,是用来备份的,但由于资源紧张,没有多余服务器进行实时备份所以只有采取这个方法.还有就是不采用GHOST的方式,我只想更新备份相关目录.
回二楼,IF倒是技术上的可以实现,但是缺少很多东西,比如我如果用IF,就要这样:IF 复制过程中提示是否覆盖 THEN 我选择NO
但是怎么实现以上这种信息的提取?
再者,如果按照文件名的方式,IF 存在这个文件 THEN 不复制
但是如何提取这个文件的文件名称?

我有办法
可以使用for命令
你的两个test目录内容要一样
可以遍历c盘的目录每个于相应的D盘文件比较
你的意思说“每天目录中的文件都不断增加或者删除”
于是我先假定你不需要那备份那些修改的文件
你如果要求的话我以后再帮你解决
主要由四个步骤
1、遍历D盘将多余的目录del掉
2、遍历D盘将多出的文件del掉
3、遍历C盘并在D盘创建没有的目录
4、遍历C盘并向D盘复制没有的文件
这样将两个文件夹保持一致
具体代码如下:

@echo off
::del多余目录
for /R D:\test\ %%i in (.) do @if not exist C:%%~pni rd /Q /S %%~dpni
::del多余文件
for /R D:\test\ %%i in (.) do @for %%j in (%%i\*) do @if not exist C:%%~pnxj del D:%%~spnxj
::创建目录
for /R C:\test\ %%i in (.) do @if not exist D:%%~pni md D:%%~pni
::copy没有的文件
for /R C:\test\ %%i in (.) do @for %%j in (%%i\*) do @if not exist D:%%~pnxj copy %%~fj D:%%~pnxj

我在XP上测试通过了
请过目吧
如果要求检查文件的大小的话就由点难度了
我有空研究下
欢迎关注百度批处理吧并支持我作吧主

自己做一个批处理吧。
AT命令:
http://support.microsoft.com/kb/313565
IF命令:
http://zhidao.baidu.com/question/1270329.html

自己学会了就不用找别人了。呵呵!

如果不是用来备份,就不用复制。直接映射过去就行了。