中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请帮忙解释这个代码中形式参数的含义
作者:
标题: 请帮忙解释这个代码中形式参数的含义 上一主题 | 下一主题
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
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复
weapfe
初级用户




积分 144
发帖 66
注册 2006-11-30
状态 离线
『第 2 楼』:  

看来这次别想在线时学会了。。。
有没有人啊O=C

2007-6-19 10:06
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复

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


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



论坛跳转: