中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 各位高手.我实在无法理理解批处理中%0-9的作用
作者:
标题: 各位高手.我实在无法理理解批处理中%0-9的作用 上一主题 | 下一主题
312699929
新手上路





积分 5
发帖 2
注册 2009-12-12
状态 离线
『楼 主』:  各位高手.我实在无法理理解批处理中%0-9的作用

搜到很多批处理的教程,但都千篇一律! 看到%号的作用就看不懂了. 说%是一个参数什么的,能代替什么. 实在看不懂.这问题很弱智,也许大家都懂.但我实在无法理解,也找不了相应的资料,小弟第一次在这个论坛发帖求助,希望有大侠能帮我解释一下%号的作用


2009-12-12 13:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

www.bathome.cn/viewthread.php? ... %0代表批处理文件本身,%1代表第一个参数,%2代表第二个参数,依此类推。如果仍有疑问,可参考批处理基础教程。 假设批处理C:\test.bat内容如下 @echo off echo %0 %1 %2 你可以在命令行窗口中执行 C:\test.bat hello_1 hello_2 将会得到结果: test.bat hello_1 hello_2




2009-12-13 19:44
查看资料  发短消息  网志   编辑帖子  回复  引用回复
caimingbing
初级用户





积分 50
发帖 26
注册 2009-12-4
状态 离线
『第 3 楼』:  

对于新手来说,开始一切都是复杂的


2009-12-14 11:38
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zmycgh
初级用户





积分 31
发帖 13
注册 2009-6-26
状态 离线
『第 4 楼』:  

blog.csdn.net/craigyang/archiv ... 具体的意思看上面的地址我们共同学习! %0 这个有点特殊,有几层意思,先讲%1-%9的意思. %1 返回批处理的第一个参数 %2 返回批处理的第二个参数 %3-%9依此推类 反回批处理参数?到底怎么个返回法? 我们看这个例子,把下面的代码保存为test.BAT然后放到C盘下 @echo off echo %1 %2 %3 %4 echo %1 echo %2 echo %3 echo %4 进入CMD,输入cd c:\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 注意中间的空额,我们会看到这样的结果: 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 对比下代码,%1就是我是第一个参数 %2就是我是第二个参数 怎么样理解了吧! 这些%1和%9可以让批处理也能带参数运行,大大提高批处理功能! 还有一个%* 他是什么呢?他的作用不是很大,只是返回参数而已,不过他是一次返回全部参数 的值,不用在输入%1 %2来确定一个个的 例子 @echo off echo %* 同样保存为test.bat 放到C盘 进入CMD,输入cd c:\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 可以看到他一次把全部参数都显示出来了 @echo off for %%i in (%*) do echo %%i 做一个循环,也是将%1-%9的参数全部显示出来 好现在开始讲那个比较特殊的%0 %0 这个不是返回参数的值了,他有两层意思! 第一层意思:返回批处理所在绝对路径 例子: @echo off echo %0 pause 保存为test.BAT放在桌面运行,会显示如下结果 "C:\Documents and Settings\Administrator\桌面\test.bat" 他把当前批处理执行的所在路经打印出来了,这就是返回批处理所在绝对路径的意思 第二层意思:无限循环执行BAT 例子: @echo off net user %0 保存为BAT执行,他就会无限循环执行net user这条命令,直到你手动停止. 以上就是批处理中的一些系统变量,另外还有一些变量,他们也表示一些功能, FOR命令中的那些就是,FOR变量已经说过,就不讲了.


2009-12-15 11:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
nms
新手上路





积分 19
发帖 10
注册 2010-2-4
状态 离线
『第 5 楼』:  

原来如此,,,谢谢你的指点


2010-2-5 15:40
查看资料  发短消息  网志   编辑帖子  回复  引用回复
hbtsjy
新手上路





积分 2
发帖 1
注册 2010-2-6
状态 离线
『第 6 楼』:  

看不懂啊


2010-2-8 00:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sysplay
初级用户





积分 23
发帖 19
注册 2009-7-10
状态 离线
『第 7 楼』:  

批处理可以从cmd中运行。从cmd中运行时,可以附带参数运行,如bat.bat a,其中bat.bat是批处理文件名,a就是一个参数。那么在bat.bat中,又如何表示这个参数呢?这里就用到%1~%9。%1就是第一个参数,以此类推。上例中的批处理文件中的%1就是a。 [ Last edited by sysplay on 2010-2-8 at 09:41 ]


2010-2-8 09:39
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
rs369007
初级用户





积分 147
发帖 131
注册 2008-9-22
状态 离线
『第 8 楼』:  

int main(int argc,char *argv[]) //char *argv[] 接收cmd的启动参数 { if(argc==1) puts("error"); else puts("argv[1]"); return 0: } %1 %2... 就相当于函数对传入函数内部的参数的引用,这里就相当于 argv[1].... for /f "delims=" %%i in (*.txt) do call :work %%~nxi pause>nul :work for /f "delims=" %%j in (‘findstr "string" %1) do ( echo %%j ) goto :eof 这里%1 就是对call传入参数%%~nxi(传入的文件名+扩展名)的直接引用




freedom!
2010-2-12 15:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: