![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 07:57 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理高手进来!----关于FOR,%%等函数的应用 |
| 可打印版本 1,462 / 12 |
| 第1楼 field4728 | 发表于 2006-10-27 03:27 |
| 初级用户 发帖 10 积分 26 | |
|
批处理高手进来!----关于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 ] |
|
| 第2楼 NaturalJ0 | 发表于 2006-10-27 03:30 |
| 银牌会员 发帖 533 积分 1,181 | |
|
我是第一个回的,先给你解释第一行。 ^_^
@ECHO OFF 表示屏蔽屏幕输出。 PS: 是不是有点水。 = =b [ Last edited by NaturalJ0 on 2006-10-27 at 03:31 AM ] |
|
| 第3楼 vkill | 发表于 2006-10-27 03:32 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
汗~~~建议先好好看看这个
开始/运行 hh ntcmds.chm::/ntcmds.htm |
|
| 第4楼 不得不爱 | 发表于 2006-10-27 03:39 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
多看下帮助吧
|
|
| 第5楼 field4728 | 发表于 2006-10-27 04:37 |
| 初级用户 发帖 10 积分 26 | |
|
谢谢各位的回复
可否浪费点时间一行一行帮解释下呢? 小弟还有很多类似于这种%%,%1,SHIFT,FOR等等不懂啊,逐行解释一下相信能悟出不少,感谢啊~!!!我知道这里高手 |
|
| 第6楼 field4728 | 发表于 2006-10-27 04:38 |
| 初级用户 发帖 10 积分 26 | |
|
NaturalJ0
大哥!!!! |
|
| 第7楼 electronixtar | 发表于 2006-10-27 05:21 |
| 铂金会员 发帖 2,672 积分 7,493 | |
这句是注释,我看懂了 |
|
| 第8楼 NaturalJ0 | 发表于 2006-10-27 05:27 |
| 银牌会员 发帖 533 积分 1,181 | |
|
DOS学习入门 & 精彩文章 (教学室) 能学到很多基础的东西,建议去下些教程看看。
|
|
| 第9楼 lxmxn | 发表于 2006-10-27 06:34 |
| 版主 发帖 4,938 积分 11,386 | |
|
建议多看看命令与帮助:hh ntcmds.chm::ntcmds.htm,经常去教学室逛逛。 |
|
| 第10楼 field4728 | 发表于 2006-10-30 23:18 |
| 初级用户 发帖 10 积分 26 | |
|
版主我已经改了,请版主有时间帮小弟详细分析下这个程式吧,先谢谢了
|
|
| 第11楼 不得不爱 | 发表于 2006-10-31 03:11 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
@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的行 |
|
| 第12楼 field4728 | 发表于 2006-10-31 03:53 |
| 初级用户 发帖 10 积分 26 | |
|
非常感谢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 |
|
| 第13楼 不得不爱 | 发表于 2006-10-31 05:36 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
IF "%1"=="" GOTO RUN //如果%1是空的就跳到:RUN
REM If 'loop' param, set flag and remove. REM //注释 %1 //批处理文件中可替换参数 SHIFT 更改批处理文件中可替换参数的位置。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |