首页 > 编程 > BAT > 正文

bat+xcopy实现只复制比目标文件更新的文件

2020-06-09 14:23:04
字体:
来源:转载
供稿:网友
问题一:假如现在c:/a文件夹下的所有文件和d:/a下的文件相同(修改日期及内容)

c:/a下的一个文件被别人修改了或者添加了一个文件!
能否写个bat,判断一下c:/a文件夹下的每个文件的最后修改日期是不是在前两天内!如果是,则复制到d:/a下的相应目录(要是原来有,则覆盖),如果不是,则不复制了.

目录复制:

复制代码 代码如下:

@echo off
echo y|xcopy c:/a /d /e /r /k d:/a/
pause


复制文件

复制代码 代码如下:

echo y | xcopy c:/index2.htm /d /r /k c:/index.htm


echo y 就是覆盖文件,y确定。

为特别奖励大家给个多功能的判决原文件大小才复制的

复制代码 代码如下:

@echo off
::每5分钟复制以下首页
for /f %%i in ('dir /b c:/index2.htm') do (
set indexdx=%%~zi
)
if %indexdx% gtr 5120 (
echo y | xcopy c:/index2.htm /d /r /k c:/index.htm
)


由于bat的局限性,不如vbs功能更强,这里提供一个vbs版本的。大家可以到这里看下。

经测试如果目标文件与源文件相同则不复制。确实一定程度了减少了对硬盘的读写。

问题二:批处理如何判断修改日期复制文件夹下所有文件和子文件夹

A:复制当前目录下所有文件及子文件夹到指定文件夹下,如果文件、文件夹同名但修改时间不同,以最新覆盖旧的(不询问是否覆盖),如果修改时间相同则不复制。
例如:复制C盘Font文件夹下的所有字体(假设该文件夹下有子文件夹和其它类型的文件)到H盘的Fonts文件下,如何实现上述效果。

B:复制当前目录下所有文件及文件夹到指定文件夹下(提供文件夹名,但不知道盘符),如果文件、文件夹同名但修改时间不同,以最新覆盖旧的(不询问是否覆盖),如果修改时间相同则不复制。
例如:复制C盘Font文件夹下的所有字体(假设该文件夹下有子文件夹和其它类型的文件),复制到X盘Fonts文件下(X盘符不确定),如何实现上述效果。

复制代码 代码如下:

xcopy *.ttf %1:/Fonts/*.* /S /D /Y


不要猜结果,运行一下看结果。

Xcopy参数介绍

  命令格式:XCOPY source [destination] 一堆可选的参数
  参数介绍
  source 指定要复制的文件。
  destination 指定新文件的位置和/或名称。
  /A 只复制有存档属性集的文件, 但不改变属性。
  /M 只复制有存档属性集的文件, 并关闭存档属性。
  /D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
  /EXCLUDE:file1[+file2][+file3]...

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表