![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 20:24 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 各位高手.我实在无法理理解批处理中%0-9的作用 |
| 可打印版本 1,144 / 7 |
| 第1楼 312699929 | 发表于 2009-12-12 13:55 |
| 新手上路 发帖 2 积分 5 | |
|
各位高手.我实在无法理理解批处理中%0-9的作用 搜到很多批处理的教程,但都千篇一律!
看到%号的作用就看不懂了. 说%是一个参数什么的,能代替什么. 实在看不懂.这问题很弱智,也许大家都懂.但我实在无法理解,也找不了相应的资料,小弟第一次在这个论坛发帖求助,希望有大侠能帮我解释一下%号的作用 |
|
| 第2楼 HAT | 发表于 2009-12-13 19:44 |
| 版主 发帖 5,017 积分 9,023 | |
|
http://www.bathome.cn/viewthread.php?tid=2782#pid22365
%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 |
|
| 第3楼 caimingbing | 发表于 2009-12-14 11:38 |
| 初级用户 发帖 26 积分 50 | |
|
对于新手来说,开始一切都是复杂的
|
|
| 第4楼 zmycgh | 发表于 2009-12-15 11:53 |
| 初级用户 发帖 13 积分 31 | |
|
http://blog.csdn.net/craigyang/archive/2009/09/17/4561173.aspx
具体的意思看上面的地址我们共同学习! %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变量已经说过,就不讲了. |
|
| 第5楼 nms | 发表于 2010-02-05 15:40 |
| 新手上路 发帖 10 积分 19 | |
|
原来如此,,,谢谢你的指点
|
|
| 第6楼 hbtsjy | 发表于 2010-02-08 00:49 |
| 新手上路 发帖 1 积分 2 | |
|
看不懂啊
|
|
| 第7楼 sysplay | 发表于 2010-02-08 09:39 |
| 初级用户 发帖 19 积分 23 | |
|
批处理可以从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 ] |
|
| 第8楼 rs369007 | 发表于 2010-02-12 15:38 |
| 初级用户 发帖 131 积分 147 | |
|
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(传入的文件名+扩展名)的直接引用 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |