中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理高手进来!----关于FOR,%%等函数的应用
作者:
标题: 批处理高手进来!----关于FOR,%%等函数的应用 上一主题 | 下一主题
field4728
初级用户





积分 26
发帖 10
注册 2006-10-27
状态 离线
『楼 主』:  批处理高手进来!----关于FOR,%%等函数的应用

求助批处理高手啊,帮小弟一个忙,感激涕零!!!!!

求助批处理高手啊,能否帮小弟一个忙!!
把下面这段不长的批处理命令一行一行单独解释一下意思好吗?感激涕零!!!!!

@ECHO OFF

SET PTFS=945,915,865,855,845,830,815,810,
SET EX=
SET CMDS=
SET LP=

FOR %%I IN (%PTFS%) DO IF EXIST I%%IDIAG.EXE SET EX=I%%IDIAG
IF NOT "%EX%"=="" GOTO START
ECHO.
ECHO Error!  8xx/9xx executable not found.
ECHO.
GOTO END

REM                     Process the loop parameter this batch file.

:START
IF "%1"=="" GOTO RUN
REM                     If 'loop' param, set flag and remove.
REM
IF "%1"=="loop" SET LP=Y
IF "%1"=="loop" SHIFT
IF "%1"=="loop" GOTO START
REM                     Section overcomes DOS's nine parameter limit.
REM                     Collect all the non loop command line args.
REM
IF NOT "%1"=="" SET CMDS=%CMDS% %1
SHIFT
GOTO START

REM                     Call the exe with all the parameters.

:RUN
%EX%%CMDS%
ECHO .
IF ERRORLEVEL 2 GOTO FAIL
IF ERRORLEVEL 1 GOTO ABORT
IF "%LP%"=="Y" GOTO RUN
IF ERRORLEVEL 0 GOTO PASS
ECHO INVALID RETURN CODE
GOTO END

:PASS
ECHO Pass
GOTO END

:FAIL
ECHO Fail
GOTO END

:ABORT
echo incomplete
GOTO END

:END
ECHO .
REM Clean up environment
FOR %%I IN (EX,CMDS,PTFS,LP,LPF) DO SET %%I=

[ Last edited by field4728 on 2006-10-30 at 11:15 PM ]

2006-10-27 03:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  

我是第一个回的,先给你解释第一行。 ^_^

@ECHO OFF

表示屏蔽屏幕输出。

PS: 是不是有点水。 = =b

[ Last edited by NaturalJ0 on 2006-10-27 at 03:31 AM ]

2006-10-27 03:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

汗~~~建议先好好看看这个

开始/运行 hh ntcmds.chm::/ntcmds.htm

2006-10-27 03:32
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 4 楼』:  

多看下帮助吧



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-27 03:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
field4728
初级用户





积分 26
发帖 10
注册 2006-10-27
状态 离线
『第 5 楼』:  

谢谢各位的回复
可否浪费点时间一行一行帮解释下呢?
小弟还有很多类似于这种%%,%1,SHIFT,FOR等等不懂啊,逐行解释一下相信能悟出不少,感谢啊~!!!我知道这里高手

2006-10-27 04:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
field4728
初级用户





积分 26
发帖 10
注册 2006-10-27
状态 离线
『第 6 楼』:  

NaturalJ0
大哥!!!!

2006-10-27 04:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  



  Quote:
REM                     Process the loop parameter this batch file.

这句是注释,我看懂了




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-27 05:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 8 楼』:  

DOS学习入门 & 精彩文章 (教学室) 能学到很多基础的东西,建议去下些教程看看。

2006-10-27 05:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 9 楼』:  


  建议多看看命令与帮助:hh ntcmds.chm::ntcmds.htm,经常去教学室逛逛。


2006-10-27 06:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
field4728
初级用户





积分 26
发帖 10
注册 2006-10-27
状态 离线
『第 10 楼』:  

版主我已经改了,请版主有时间帮小弟详细分析下这个程式吧,先谢谢了

2006-10-30 23:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 11 楼』:  

@ECHO OFF   //回显关闭,并且不输出ECHO OFF
SET PTFS=945,915,865,855,845,830,815,810, //设置变量PTFS的值
SET EX=
SET CMDS=
SET LP=        //设置变量EX、CMDS、LP的值为空
FOR %%I IN (%PTFS%) DO IF EXIST I%%IDIAG.EXE SET EX=I%%IDIAG //如果找到 I945IDIAG.EXE 就设置EX变量为I945DIAG,如果找到 I865IDIAG.EXE 就设置EX变量为I865DIAG........
IF NOT "%EX%"=="" GOTO START  //如果变量EX不是空的就跳到标号为:START的行
ECHO. //显示空行
ECHO Error!  8xx/9xx executable not found. //显示Error!  8xx/9xx executable not found.
ECHO.  //显示空行
GOTO END  跳到标号为:END的行



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-31 03:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
field4728
初级用户





积分 26
发帖 10
注册 2006-10-27
状态 离线
『第 12 楼』:  

非常感谢QWE1234567的热情回复!!!

可否在帮忙解释下以下这段,我对%1,"%1"=="" 也有些不明白,再次感谢!
:START
IF "%1"=="" GOTO RUN
REM                     If 'loop' param, set flag and remove.
REM
IF "%1"=="loop" SET LP=Y
IF "%1"=="loop" SHIFT
IF "%1"=="loop" GOTO START
REM                     Section overcomes DOS's nine parameter limit.
REM                     Collect all the non loop command line args.
REM
IF NOT "%1"=="" SET CMDS=%CMDS% %1
SHIFT
GOTO START

2006-10-31 03:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 13 楼』:  

IF "%1"=="" GOTO RUN //如果%1是空的就跳到:RUN
REM                     If 'loop' param, set flag and remove.
REM                                                                          //注释
%1 //批处理文件中可替换参数
SHIFT 更改批处理文件中可替换参数的位置。



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-31 05:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: