Board logo

标题: [文件操作] 批处理怎样复制特定时间段的文件? [打印本页]

作者: reddragon1314    时间: 2010-4-2 10:36     标题: 批处理怎样复制特定时间段的文件?

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

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

[ 本帖最后由 reddragon1314 于 2010-4-2 16:25 编辑 ]
作者: reddragon1314    时间: 2010-4-2 11:16

本帖最后由 pcl_test 于 2016-7-24 19:55 编辑

我看了一个高手的代码。拿过来改改。但有些地方看不懂。请高手指点指点。
http://www.bathome.net/redirect. ... 38945&ptid=6012
set time1=
set /p time1=begintime(20090721) echo you put the begintime
set time2=
set /p time2=endtime(20090723)echo you put the endtime

md "f:\mp3\%time2%"

(for /r f:\ftp\ %%a in (*.*) do (
set var=%%~ta                 ::看不懂
set var=!var:~0,4!!var:~5,2!!var:~8,2!  ::看不懂
IF !VAR! GEQ !TIME1! IF !VAR! LEQ !TIME2! (echo %%a)  ::看不懂
))>%temp%\%~*.mp3
rem 读取符合条件的文件

for /f "tokens=*" %%a in (type "%temp%\%~*.mp3") do (
    echo dir /ta  ::看不懂
    xcopy "%%a" "f:\mp3\%time2%"
rem 复制,并显示状态,注意errorlevel 的%改成了!
    if !errorlevel! equ 0 (echo OK) else ( echo NG)
)

pause
作者: caruko    时间: 2010-4-2 14:01

xcopy \olddir  \newdir /d:01-01-2010
作者: reddragon1314    时间: 2010-4-2 15:02

上面这位大哥,搞一行代码放那,能实现功能么?看不懂。
作者: bat007    时间: 2010-4-2 15:14     标题: 回复 4楼 的帖子

看不懂,就亲自试试吧。
作者: reddragon1314    时间: 2010-4-2 15:44

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


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

不能实现我说的,拷贝某一个时间段内的文件的要求。
作者: caruko    时间: 2010-4-2 16:13

  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 编辑 ]
作者: reddragon1314    时间: 2010-4-2 16:30

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

[ 本帖最后由 reddragon1314 于 2010-4-2 16:32 编辑 ]
作者: bat007    时间: 2010-4-2 17:52     标题: 回复 8楼 的帖子

你觉得7楼的代码不好吗?
作者: caruko    时间: 2010-4-2 17:54

拷贝的目录,自己设置变量,日期自己改或者改成变量
  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 编辑 ]
作者: reddragon1314    时间: 2010-4-3 08:24

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


绝对没这个意思,主要是想把抄来的那个弄懂了。
作者: bat007    时间: 2010-4-3 13:02     标题: 回复 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          控制显示或用来分类的时间字符域。
作者: reddragon1314    时间: 2010-4-3 20:48

set var=!var:~0,4!!var:~5,2!!var:~8,2!  ::看不懂
叹号是表示什么意思呢?
作者: bat007    时间: 2010-4-3 20:58     标题: 回复 13楼 的帖子

批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
作者: reddragon1314    时间: 2010-4-12 08:21

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

findstr 在这里的作用谁能给解释一下? 尤其是那个“个文件” 是啥意思?
作者: GNU    时间: 2010-4-12 13:50     标题: 回复 15楼 的帖子

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




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