|
312699929
新手上路
积分 5
发帖 2
注册 2009-12-12
状态 离线
|
『楼 主』:
各位高手.我实在无法理理解批处理中%0-9的作用
搜到很多批处理的教程,但都千篇一律!
看到%号的作用就看不懂了.
说%是一个参数什么的,能代替什么.
实在看不懂.这问题很弱智,也许大家都懂.但我实在无法理解,也找不了相应的资料,小弟第一次在这个论坛发帖求助,希望有大侠能帮我解释一下%号的作用
|
|
2009-12-12 13:55 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2009-12-13 19:44 |
|
|
caimingbing
初级用户
积分 50
发帖 26
注册 2009-12-4
状态 离线
|
『第
3 楼』:
对于新手来说,开始一切都是复杂的
|
|
2009-12-14 11:38 |
|
|
zmycgh
初级用户
积分 31
发帖 13
注册 2009-6-26
状态 离线
|
『第
4 楼』:
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变量已经说过,就不讲了.
|
|
2009-12-15 11:53 |
|
|
nms
新手上路
积分 19
发帖 10
注册 2010-2-4
状态 离线
|
|
2010-2-5 15:40 |
|
|
hbtsjy
新手上路
积分 2
发帖 1
注册 2010-2-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 |
|