中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求熟悉%1这个变量的作用的朋友指点我一二
作者:
标题: 求熟悉%1这个变量的作用的朋友指点我一二 上一主题 | 下一主题
nblue
初级用户




积分 117
发帖 37
注册 2006-6-8
状态 离线
『楼 主』:  求熟悉%1这个变量的作用的朋友指点我一二

我现在对批处理非常感兴趣,在网上下载了一个教程来学,但学到用变量这一节时总是感觉思路不通,想绕过去学下一节可是根本绕不过去,看来一定要将变量高明白才能学下一节。但我怎么也高不明白,可能是教程讲的不太明白或者少了点什么。现在我不明白的是,这个变量参数是如何同命令联系起来的?%1是指命令本身,那%2-%9是各指什么 ?在实际运用中如何使用?哎,没搞懂连问问题也不知应该怎么问了。多谢!

2006-6-24 14:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 2 楼』:  

%0---表示批处理本身
%1---表示第一个参数
%2---........二...........
%3
.
.
.
%*表示所有的参数,没有什么好说的

2006-6-24 14:51
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
nblue
初级用户




积分 117
发帖 37
注册 2006-6-8
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by bagpipe at 2006-6-24 14:51:
%0---表示批处理本身
%1---表示第一个参数
%2---........二...........
%3
.
.
.
%*表示所有的参数,没有什么好说的

你对这个熟悉当然觉得没什么好说的了呀
%0---表示批处理本身,表示本身有什么作用?
%1---表示第一个参数,表示 第一个什么参数?如何使用?
%2---........二...........
%3

2006-6-24 17:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xjmxjm1234
中级用户

论坛第一菜鸟


积分 361
发帖 166
注册 2006-4-15
状态 离线
『第 4 楼』:  

怎么说呢,这里的 %1~%9 是形式参数,在操作中会被实际参数所替代,使批命令更加灵活,举个例子吧。
有个批命令叫“copydata.bat”

copy %1.dat %2.dat
del %3.tmp
cd %4
dir
type 0%.bat

如果我键入
copydata a:\old c:\set\new e:\land genk


就相当于

copy a:\old.dat c:\set\new
del e:\land.tmp
cd genk
dir
type copydata.bat

因为最多只有10个参数,要执行更多的参数就要用“shift”命令
shift命令 就是 把%1代替%0  把%2代替%1 把%3代替%2 (类推)

[ Last edited by xjmxjm1234 on 2006-6-26 at 22:24 ]



Diskette  Operating  System
2006-6-24 18:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
nblue
初级用户




积分 117
发帖 37
注册 2006-6-8
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by xjmxjm1234 at 2006-6-24 18:14:
怎么说呢,这里的 1%~9% 是形式参数,在操作中会被实际参数所替代,使批命令更加灵活,举个例子吧。
有个批命令叫“copydata.bat”

copy 1%.dat 2%.dat
...

多谢你的回复,非常浅显,但我不明白用这个参数不是更加复杂了吗?还不如直接用原来的命令更直接!

2006-6-25 19:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nblue
初级用户




积分 117
发帖 37
注册 2006-6-8
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by xjmxjm1234 at 2006-6-24 18:14:
怎么说呢,这里的 1%~9% 是形式参数,在操作中会被实际参数所替代,使批命令更加灵活,举个例子吧。
有个批命令叫“copydata.bat”

copy 1%.dat 2%.dat
...

不过用此参数好像在输入的时候可以更灵活一些,而不用更改批处理本身

2006-6-25 19:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
220110
荣誉版主




积分 718
发帖 313
注册 2005-9-26
状态 离线
『第 7 楼』:  

不过用此参数好像在输入的时候可以更灵活一些,而不用更改批处理本身   ----聪明!建议学点高级编程语言先吧.

2006-6-25 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

Re xjmxjm1234:

      “1%~9%”,是有意要这么写的吗?



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-25 23:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xjmxjm1234
中级用户

论坛第一菜鸟


积分 361
发帖 166
注册 2006-4-15
状态 离线
『第 9 楼』:  

大哥,我错了,是 %1~%9

to: nblue
如果我不输入
copydata a:\old c:\set\new e:\land genk,而是
copydata a:\aaa c:\bbb e:\ccc ddd
就相当于

copy a:\aaa.dat c:\bbb.dat
del e:\ccc.tmp
cd ddd
dir
type copydata.bat

当然这些参数是可以你按照要求来改变的,这就是我说的"这里的 %1~%9 是形式参数,在操作中会被实际参数所替代"
第1次的 a:\old c:\set\new e:\land genk
和第2次的 a:\aaa c:\bbb e:\ccc ddd 都是实际参数
在执行批命令的时候会按照它们的顺序来取代形式参数(就是 %1~%9)
这里的 0% 指批命令主名
1% 被 第1个实际参数替代
2% 被 第2个实际参数替代
3% 被 第3个实际参数替代(类推)

实际参数就是在命令后面所跟的执行对象,它们和命令名和它们之间一般用空格隔开

因为实际参数的可变性使的带形式参数的批命令更加灵活机变.

[ Last edited by xjmxjm1234 on 2006-6-26 at 22:25 ]



Diskette  Operating  System
2006-6-26 22:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: