
| Quote: | |
|
| Quote: | |
|
附件 1:nodefine.jpg (2007-8-8 11:11, 8.86 K,下载次数: 3)
![]()
CODE: [Copy to clipboard][ Last edited by 26933062 on 2007-8-9 at 04:47 AM ]@echo off&set a=1&set b=1&set c=1&set sst=0
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir/b *.txt') do call :ss "%%a"
rem +第三行内容=文件名 [第二行内容] [第三行内容]
for /f "tokens=1-4 delims=_=" %%a in ('set _') do set +%%d=!+%%d!_%%a[%%b][%%c]
rem __序号=文件名 第一行内容 第二行内容
for /f "tokens=2* delims=_" %%a in ('set +') do (
if not "%%b"=="" set __!a!=%%a_%%b&set/a asd+=1
)
set __>nul 2>nul||echo.&&echo 没有需要移走的文件&&echo.&&pause&&exit
:loop
for /f "tokens=1* delims==_" %%a in ('set __!b!') do set qua=%%b
:loop_
for /f "tokens=1 delims=_" %%i in ("!qua!") do set qua1="%%i"
set/a sst+=1
for /f "tokens=1-3 delims=[]" %%c in (!qua1!) do (
if !sst! neq 1 (call :duibi "%%c" %%d %%e) else set wjm="%%c"&set dyh=%%d&set deh=%%e
)
set qua1=!qua1:"=!
if "!qua:~0,1!"=="_" set qua=!qua:~1!
if not "!qua:_=!"=="!qua1!" call set qua=!!qua:%qua1%=!!&goto loop_
set /a c+=1&set /a b+=1
if defined __!b! goto loop
rem 移动文件
if not exist c:\456 md c:\456
cls&echo\&echo 以下是即将被移走的文件......&echo\
for /f "tokens=2 delims==" %%a in ('set ok^|sort') do (
echo %%a
move %%a c:\456
)
pause
start "" "c:\456"
exit
rem 将文件的前三行指定内容设为变量 格式: _文件名=第一行内容 第二行内容 第三行内容
:ss
set ls=0
rem 如果运行不成功,就将下面这行的delims=后面的空格删除,输入一个tab键即可.
for /f "tokens=2 delims= " %%b in ('findstr .* %1') do (
set/a ls+=1
if !ls! lss 4 (set "_%~1=!_%~1!_%%b") else goto :eof
)
rem 进行日期和时间的判断
:duibi
rem echo %1 %2 %3 == !wjm! !dyh! !deh!
set xx1=%1&set xx2=%2&set xx3=%3
set/a ook+=1
if "!dyh!"=="%2" (
if !deh! leq %3 (set ok!ook!=%1) else (call :pan)
goto :eof
)
for /f "tokens=1-3 delims=/" %%o in ("!dyh!") do set nian=%%q&set yue=%%o&set ri=%%p
for /f "tokens=1-3 delims=/" %%o in ("%2") do (
if !nian! gtr %%q (
call :pan
goto :eof
)
if !nian! lss %%q set ok!ook!=%1&goto :eof
if !yue! gtr %%o (
call :pan
goto :eof
)
if !yue! lss %%o set ok!ook!=%1&goto :eof
if !ri! gtr %%p (
call :pan
goto :eof
)
if !ri! lss %%p set ok!ook!=%1&goto :eof
)
goto :eof
:pan
set ok!ook!=!wjm!
set wjm=!xx1!&set dyh=!xx2!&set deh=!xx3!
goto :eof
| Quote: | |
|
CODE: [Copy to clipboard]:: 现在是一次只移动一个文件了.
:: 若有三个或三个以上的文件进行对比的话,移动的不一定是时间最近的.
:: 只能处理2000年至2099年的文件.
@echo off&set a=1&set b=1
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir/b *.txt') do call :ss "%%a"
rem +第三行内容=文件名 [第二行内容] [第三行内容]
for /f "tokens=1-4 delims=_=" %%a in ('set _') do set +%%d=!+%%d!_%%a[%%b][%%c]
rem __序号=文件名 第一行内容 第二行内容
for /f "tokens=2* delims=_" %%a in ('set +') do (
if not "%%b"=="" set __!a!=%%a_%%b&set/a a+=1
)
set __>nul 2>nul||echo.&&echo 没有需要移走的文件&&echo.&&pause&&exit
:loop
for /f "tokens=1* delims==_" %%a in ('set __!b!') do set qua=%%b
for /f "tokens=1,2 delims=_" %%i in ("!qua!") do set qua1="%%i"&set qua2="%%j"
for /f "tokens=1-3 delims=[]" %%c in (!qua1!) do set wjm="%%c"&set dyh=%%d&set deh=%%e
for /f "tokens=1-3 delims=[]" %%c in (!qua2!) do set wj="%%c"&set dyhr=%%d&set dehs=%%e
call :duibi
set /a b+=1
if defined __!b! goto loop
rem 移动文件
if not exist c:\456 md c:\456
cls&echo\&echo 以下是被移走的文件......&echo\
for /f "tokens=2 delims==" %%a in ('set ok^|sort') do (
echo %%a
move %%a c:\456
)
echo.&pause
start "" "c:\456"
exit
rem 将文件的前三行指定内容设为变量 格式: _文件名=第一行内容 第二行内容 第三行内容
:ss
set ls=0
rem 如果运行不成功,就将下面这行的delims=后面的空格删除,输入一个tab键即可.
for /f "tokens=2 delims= " %%b in ('findstr .* %1') do (
set/a ls+=1
if !ls! lss 4 (set "_%~1=!_%~1!_%%b") else goto :eof
)
goto :eof
rem 进行日期和时间的判断
:duibi
set/a ook+=1
if "!dyh!"=="!dyhr!" (
if !deh! leq !dehs! (set ok!ook!=!wj!) else (set ok!ook!=!wjm!)
goto :eof
)
for /f "tokens=1-3 delims=/" %%o in ("!dyh!") do set nian=20%%q&set yue=%%o&set ri=%%p
for /f "tokens=1-3 delims=/" %%o in ("!dyhr!") do (
set ni_an=20%%q&set y_ue=%%o&set r_i=%%p
)
if !nian!-!yue!-!ri! lss !ni_an!-!y_ue!-!r_i! (
set ok!ook!=!wj!&goto :eof
) else set ok!ook!=!wjm!
goto :eof
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) | Powered by Discuz! 2.5 |