标题: [文件操作] 批处理怎样复制特定时间段的文件? [打印本页]
作者: 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
- xcopy \olddir \newdir /L /S /E /d:04-01-2010 >1.txt :::存入时间比2010-04-01晚的文件
- 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读取
- xcopy \olddir \newdir /T /E /Y :::创建目录
- 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
拷贝的目录,自己设置变量,日期自己改或者改成变量- @echo off
- set "olddir=d:\test" & set "newdir=d:\test2"
- for /f "delims=: tokens=1,2" %%a in ("%olddir%") do (set "o_d=%%a" &set "o_p=%%b")
- for /f "delims=: tokens=1,2" %%a in ("%newdir%") do (set "n_d=%%a" &set "n_p=%%b")
- setlocal ENABLEDELAYEDEXPANSION
- xcopy %olddir% %newdir% /L /s /e /y /d:04-01-2010 |findstr /v "个文件">1.txt
- xcopy %olddir% %newdir% /L /s /e /y /d:01-01-2010 |findstr /X /V /G:1.txt|findstr /v "个文件">2.txt
- xcopy %olddir% %newdir% /T /E /y
- for /f "delims=" %%i in (2.txt) do (
- set newfile=%%~pnxi
- set newfile=!newfile:%o_p%=%n_p%!
- copy "%%i" "%n_d%:!newfile!"
- )
复制代码
[ 本帖最后由 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://www.bathome.net/) |
Powered by Discuz! 7.2 |