[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样复制特定时间段的文件?

论坛上有关于复制特定时间段的批处理。但是跟我的要求不太符合,还有段代码我又看不大懂。所以求高手在给一个。

要求。尽量的自动化,比如我输入起始时间  终止时间,文件复制就可以完成了。
包括子文件夹内的文件。复制到另外一个我自己创建的文件夹内。
谢谢。

[ 本帖最后由 reddragon1314 于 2010-4-2 16:25 编辑 ]

回复 15楼 的帖子

你把|findstr /v "个文件"删掉,对比一下两次的结果有何差别,就知道是啥意思了。

TOP

xcopy %olddir% %newdir% /L /s /e /y /d:01-01-2010 |findstr /X /V /G:1.txt|findstr /v "个文件">2.txt

findstr 在这里的作用谁能给解释一下? 尤其是那个“个文件” 是啥意思?

TOP

回复 13楼 的帖子

批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html

TOP

set var=!var:~0,4!!var:~5,2!!var:~8,2!  ::看不懂
叹号是表示什么意思呢?

TOP

回复 11楼 的帖子

::set var=%%~ta                 ::看不懂

for命令的帮助文档说的很清楚:
%~tI        - 将 %I 扩充到文件的日期/时间

::set var=!var:~0,4!!var:~5,2!!var:~8,2!  ::看不懂

字符串截取的基础知识:批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html

::IF !VAR! GEQ !TIME1! IF !VAR! LEQ !TIME2! (echo %%a)  ::看不懂

if命令的帮助文档说的很清楚:

    EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于

::    echo dir /ta  ::看不懂

dir命令的帮助文档说的很清楚:

  /T          控制显示或用来分类的时间字符域。

TOP

原帖由 bat007 于 2010-4-2 17:52 发表
你觉得7楼的代码不好吗?


绝对没这个意思,主要是想把抄来的那个弄懂了。

TOP

拷贝的目录,自己设置变量,日期自己改或者改成变量
  1. @echo off
  2. set "olddir=d:\test" & set "newdir=d:\test2"
  3. for /f "delims=: tokens=1,2" %%a in ("%olddir%") do (set "o_d=%%a" &set "o_p=%%b")
  4. for /f "delims=: tokens=1,2" %%a in ("%newdir%") do (set "n_d=%%a" &set "n_p=%%b")
  5. setlocal ENABLEDELAYEDEXPANSION
  6. xcopy %olddir% %newdir% /L /s /e /y /d:04-01-2010 |findstr /v "个文件">1.txt
  7. xcopy %olddir% %newdir% /L /s /e /y /d:01-01-2010 |findstr /X /V /G:1.txt|findstr /v "个文件">2.txt
  8. xcopy %olddir% %newdir% /T /E /y
  9. for /f "delims=" %%i in (2.txt) do (
  10.    set newfile=%%~pnxi
  11.    set newfile=!newfile:%o_p%=%n_p%!
  12.    copy "%%i" "%n_d%:!newfile!"
  13.    )
复制代码

[ 本帖最后由 caruko 于 2010-4-2 18:02 编辑 ]

TOP

回复 8楼 的帖子

你觉得7楼的代码不好吗?

TOP

还是请高手给改改上面那个批处理。

[ 本帖最后由 reddragon1314 于 2010-4-2 16:32 编辑 ]

TOP

  1. xcopy \olddir \newdir /L /S /E /d:04-01-2010 >1.txt  :::存入时间比2010-04-01晚的文件
  2. xcopy \olddir \newdir /L /S /E /Y /d:01-01-2010 |findstr /X /V /G:1.txt >2.txt  :::存入比2010-01-01晚并且去除>04-01的,或者用for读取
  3. xcopy \olddir \newdir /T /E /Y :::创建目录
  4. copy file1 file2  :::从2.txt中读出,或者直接FOR
复制代码


XCOPY的参数是/L,不是/I 写错了,另外加上/y

[ 本帖最后由 caruko 于 2010-4-2 17:59 编辑 ]

TOP

原帖由 caruko 于 2010-4-2 14:01 发表
xcopy \olddir  \newdir /d:01-01-2010


这段代码好像是只能是复制从一个时间点,到当前时间段内的文件吧。

不能实现我说的,拷贝某一个时间段内的文件的要求。

TOP

回复 4楼 的帖子

看不懂,就亲自试试吧。

TOP

上面这位大哥,搞一行代码放那,能实现功能么?看不懂。

TOP

xcopy \olddir  \newdir /d:01-01-2010

TOP

返回列表