中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 符合这一功能的P处理怎样写.
« [1] [2] »
作者:
标题: 符合这一功能的P处理怎样写. 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 16 楼』:  


:: 现在是一次只移动一个文件了.
:: 若有三个或三个以上的文件进行对比的话,移动的不一定是时间最近的.
:: 只能处理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




致精致简!
2007-8-19 00:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
joshualaw
初级用户





积分 132
发帖 62
注册 2007-6-5
状态 离线
『第 17 楼』:  

若有三个或三个以上的文件进行对比的话,移动的不一定是时间最近的.

能做到只移时间最近的那个吗, 可能要辛苦你帮忙完善下啊.thanks!

2007-8-20 15:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 18 楼』:  

太麻烦了,已失去对此题考虑的兴趣,以后记得提问时,一次性把要求说清楚.



致精致简!
2007-8-20 16:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: