Board logo

标题: [文件操作] 批处理XCOPY如何拷贝指定日期之前的文件? [打印本页]

作者: bmwtt123    时间: 2011-5-28 11:33     标题: 批处理XCOPY如何拷贝指定日期之前的文件?

DOS的XCOPY命令是我很喜欢的一个命令。它的参数D可以用来进行增量备份,将源文件夹内的资料备份到目标盘。达到增量备份要用到的参数有如下说明:
/D:m-d-y    复制在指定日期或指定日期以后改变的文件。
                   如果没有提供日期,只复制那些源时间比目标时间新的文件和目标文件夹不存在的文件。
但是,可但是,想要XCOPY指定日期之前的文件,要怎么做呢? 用for吗?
假如我想XCOPY "D:\1111" "E:\8888" /d:1-1-2005  。 只拷此日期以前的文件,也就是拷2005年以前的文件。该怎么做呢?
作者: CrLf    时间: 2011-5-28 12:09

本帖最后由 zm900612 于 2011-5-28 12:27 编辑

发重了...请忽略此楼
作者: CrLf    时间: 2011-5-28 12:10

  1. @echo off
  2. xcopy /ls /d:1-1-2005 "D:\1111" "E:\8888" /d:1-1-2005 >tmp1
  3. dir /s /a-d /b>tmp2
  4. for /f "delims=" %%a in ('findstr /l /g:tmp1 tmp2') do (
  5.    set "tmp=%%a"
  6.    setlocal enabledelayedexpansion
  7.    copy /y "%%a" "!tmp:~7!"
  8.    endlocal
  9. )
复制代码

作者: bmwtt123    时间: 2011-5-28 12:22

3# zm900612


万分的感谢!!!
作者: kangkangsz    时间: 2021-4-8 11:02

回复 3# CrLf


   大神,我运行代码后,发现DOS提示: 无效参数 - /d:01-01-2021


现有代码复制的你的,按我需要改了点东西,如下:
@echo off

echo -----------

echo 处理中

echo -----------

xcopy /ls /d:01-01-2021 "E:\一键数据副本" "C:\Users\Administrator\Desktop\个评" /d:01-01-2021 >tmp1
dir /s /a-d /b>tmp2
for /f "delims=" %%a in ('findstr /l /g:tmp1 tmp2') do (
   set "tmp=%%a"
   setlocal enabledelayedexpansion
   copy /y "%%a" "!tmp:~7!"
   endlocal
)


echo 请按任意键结束 & pause > nul


帮忙再看一下哪里有什么问题,
作者: Batcher    时间: 2021-11-21 17:42

回复 1# bmwtt123
  1. robocopy "D:\1111" "E:\8888" /e /copyall /minage:20150101
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2