![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 02:05 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请帮忙解释这个代码中形式参数的含义 |
| 可打印版本 895 / 10 |
| 第1楼 weapfe | 发表于 2007-06-19 09:26 |
| 初级用户 发帖 66 积分 144 | |
|
请帮忙解释这个代码中形式参数的含义 有这样一个程序:
1. @echo off 2. if not "%2"=="" goto _subru 3. for %%i in (0 1 2 3 4 5 6 7 8 9) do call %0 %1 %%i 4. goto _out 5. :_subru 6. set x_=%1%2 7. if "%x_%"=="00" goto _out 8. echo %x_% 9. :_out 10. pause 有这样几个问题: 1) 第二行中的“%2”是什么意思?有什么作用? 2) 每三行中的call及后面的%0 %1是什么意思?再者,后面为什么还要跟一个“%%i” 3) 程序的运行路线是怎么走的? 这是一个依次显示数字的程序,从01-99依次显过。(别人写的,忘了是哪个了。。。) 这是我想了一天都没有想明白有程序,另外还查看了本坛的某些帖子,看不很懂,我想哪位达人能抽空儿,给非常详细的说一下,或帖出由你收集到的想关的帖子也好,谢谢! [ Last edited by bjsh on 2007-7-31 at 02:21 PM ] |
|
| 第2楼 weapfe | 发表于 2007-06-19 10:06 |
| 初级用户 发帖 66 积分 144 | |
|
看来这次别想在线时学会了。。。
有没有人啊O=C |
|
| 第3楼 6622186 | 发表于 2007-06-19 11:30 |
| 高级用户 发帖 411 积分 894 | |
|
多看看帮助, 别问没水准的问题!
|
|
| 第4楼 zasxcdfv | 发表于 2007-06-19 11:32 |
| 初级用户 发帖 75 积分 152 | |
|
都是些很基础的问题。。。我也是初学者,lz多看看命令行的帮助,可以获得答案的~
|
|
| 第5楼 HAT | 发表于 2007-06-19 11:52 |
| 版主 发帖 5,017 积分 9,023 | |
|
//1) 第二行中的“%2”是什么意思?有什么作用?
%2代表第二个参数,作用是判断运行这个批处理时输入的第二个参数是否为空。 //2) 每三行中的call及后面的%0 %1是什么意思?再者,后面为什么还要跟一个“%%i” %0代表这个批处理本身,%1代表第一个参数,for循环中使用变量时应该用两个%,比如%%i //3) 程序的运行路线是怎么走的? 假设这个批处理的名字为test.bat 你分别用以下三种方法运行: test.bat test.bat 1 test.bat 2 3 这样你就知道运行路线是怎么走的了 |
|
| 第6楼 weapfe | 发表于 2007-06-19 12:46 |
| 初级用户 发帖 66 积分 144 | |
|
回以上楼 回五楼
1,“//1) 第二行中的“%2”是什么意思?有什么作用? %2代表第二个参数”请问这第二个参数是指的哪个命令,现在头都大了,分不清哪个是哪个了。。 2, 我也知道(只是单单知道这个概念而已)%0是代表这个P处理本身,%1是代表第一个参数,但在这个里面(甚至任何一个程序)具体代表哪个,[或许这个一个语文题]。 3,“for循环中使用变量时应该用两个%,比如%%i“这好像不是我说的那个意思,可能是我没有表述清楚,我是说为什么有了“%1”这个参数,还要再跟个“%%i" 4, 运行了下HAT兄说的方法,不知道“test.bat 2 3”是为了简写而写在一起的,还是原本就应这样写,我把 @echo off test.bat 2 3 写入到一个P处理中,运行不通! 因为一直不明白这些参数问题,看了N个帖子,依就是“型是而非”。还望一一细说。 另回3楼:就是看了不明白才会发问,并非故意开炮。看了几个帖子都是与基础有些间离,如果兄有细帖,还望不吝指出! |
|
| 第7楼 zasxcdfv | 发表于 2007-06-19 13:11 |
| 初级用户 发帖 75 积分 152 | |
|
test.bat 2 3
test.bat=%0 2=%1 3=%2 至于%%i,取的是(0 1 2 3 4 5 6 7 8 9)里的值。 楼上让你尝试test.bat 2 3,你直接运行当然没这个了。。。你得把你主楼的程序创建为test.bat啊... 建议lz不妨多一点探索精神,多动手,多读程序。感觉这东西就是潜移默化的。 其实我接触批处理也就一个星期:) [ Last edited by zasxcdfv on 2007-6-19 at 01:21 PM ] |
|
| 第8楼 weapfe | 发表于 2007-06-19 13:25 |
| 初级用户 发帖 66 积分 144 | |
|
回七楼 我已经把(主程序)保存成test.bat了。
你是说test.bat 2 3中的 2=%1 3=%2 这我清楚,不明白的是%1和%2对应(主程序)里的哪部分? |
|
| 第9楼 zasxcdfv | 发表于 2007-06-19 13:28 |
| 初级用户 发帖 75 积分 152 | |
|
你执行了test.bat 2 3后,
程序中的%1就是2了,%2就是3。 %0就是"test.bat”这个字符串(就是命令本身) 然后你把它们代进去看一下程序的流程就明白了。 |
|
| 第10楼 HAT | 发表于 2007-06-19 13:34 |
| 版主 发帖 5,017 积分 9,023 | |
|
我已经把(主程序)保存成test.bat了。
你是说test.bat 2 3中的 2=%1 3=%2 这我清楚,不明白的是%1和%2对应(主程序)里的哪部分? ============================= 把test.bat保存到C:\ 开始-运行-cmd 在弹出的msdos窗口中输入C:\test.bat 2 3 回车看结果 |
|
| 第11楼 weapfe | 发表于 2007-06-19 14:25 |
| 初级用户 发帖 66 积分 144 | |
|
回10楼 结果是23。结果怎么是23呢?
那句"call %0 %1 %%i“也就应该等同于上面的test.bat 2 3了吧, ============= 但那是指明了test.bat后面有2和3这两个参数时也就很好明白了。 后面的第一个数=====%1 后面的第二个数=====%2 . . ============= 但就像这个"call %0 %1 %%i“, %0什么时候都是指本身没有错,也就是像上面的test.bat一样, 可这个%1是指什么呢,没有对应的呀,是“(0 1 2 3 4 5 6 7 8 9)”中的第一个吗? 不清楚了,只是知道“(0 1 2 3 4 5 6 7 8 9)”在第一个循环时"%%i"=="0" 那好了,现在%0清楚了,%%i会在循环时对应0,1,2。。。 可这个%1呢,难道说是这样: 在第一次循环伊始,"call %0 %1 %%i"=="call %0 %%i"?? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |