|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『楼 主』:
请帮忙解释这个代码中形式参数的含义
有这样一个程序:
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 ]
|
|
2007-6-19 09:26 |
|
|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『第
2 楼』:
看来这次别想在线时学会了。。。
有没有人啊O=C
|
|
2007-6-19 10:06 |
|
|
6622186
高级用户
积分 894
发帖 411
注册 2007-2-17
状态 离线
|
『第
3 楼』:
多看看帮助, 别问没水准的问题!
|
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul
|
|
2007-6-19 11:30 |
|
|
zasxcdfv
初级用户
积分 152
发帖 75
注册 2007-2-6
状态 离线
|
『第
4 楼』:
都是些很基础的问题。。。我也是初学者,lz多看看命令行的帮助,可以获得答案的~
|
|
2007-6-19 11:32 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
5 楼』:
//1) 第二行中的“%2”是什么意思?有什么作用?
%2代表第二个参数,作用是判断运行这个批处理时输入的第二个参数是否为空。
//2) 每三行中的call及后面的%0 %1是什么意思?再者,后面为什么还要跟一个“%%i”
%0代表这个批处理本身,%1代表第一个参数,for循环中使用变量时应该用两个%,比如%%i
//3) 程序的运行路线是怎么走的?
假设这个批处理的名字为test.bat
你分别用以下三种方法运行:
test.bat
test.bat 1
test.bat 2 3
这样你就知道运行路线是怎么走的了
|
|
2007-6-19 11:52 |
|
|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『第
6 楼』:
回以上楼
回五楼
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楼:就是看了不明白才会发问,并非故意开炮。看了几个帖子都是与基础有些间离,如果兄有细帖,还望不吝指出!
|
|
2007-6-19 12:46 |
|
|
zasxcdfv
初级用户
积分 152
发帖 75
注册 2007-2-6
状态 离线
|
『第
7 楼』:
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 ]
|
|
2007-6-19 13:11 |
|
|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『第
8 楼』:
回七楼
我已经把(主程序)保存成test.bat了。
你是说test.bat 2 3中的
2=%1
3=%2
这我清楚,不明白的是%1和%2对应(主程序)里的哪部分?
|
|
2007-6-19 13:25 |
|
|
zasxcdfv
初级用户
积分 152
发帖 75
注册 2007-2-6
状态 离线
|
『第
9 楼』:
你执行了test.bat 2 3后,
程序中的%1就是2了,%2就是3。
%0就是"test.bat”这个字符串(就是命令本身)
然后你把它们代进去看一下程序的流程就明白了。
|
|
2007-6-19 13:28 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
10 楼』:
我已经把(主程序)保存成test.bat了。
你是说test.bat 2 3中的
2=%1
3=%2
这我清楚,不明白的是%1和%2对应(主程序)里的哪部分?
=============================
把test.bat保存到C:\
开始-运行-cmd
在弹出的msdos窗口中输入C:\test.bat 2 3
回车看结果
|
|
2007-6-19 13:34 |
|
|
weapfe
初级用户
积分 144
发帖 66
注册 2006-11-30
状态 离线
|
『第
11 楼』:
回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"??
|
|
2007-6-19 14:25 |
|