Board logo

标题: [原创] 批处理参数点点谈 [打印本页]

作者: youxi01    时间: 2007-12-26 22:17     标题: 批处理参数点点谈

作者:[email=youxi01@bbs.bathome.net]youxi01@bbs.bathome.net[/email],转载请注明;

这里的参数是我们常见的 %1、%2等,而非批处理中的变量。

批处理参数基本可以分为两类:
1、批处理文件本身的参数,如:某一批处理文件,文件名为:test.bat,调用方式可以为:test.bat ok
那么OK就作为参数传给test.bat文件。
简单做个示范:test.bat 中的内容如下(其中test.bat保存在F盘):
  1. @echo off
  2. title 计算两个数字之和
  3. set /a num1=%~1 %======这里是从外部传入的第一个参数======%
  4. set /a num2=%~2 %======这里是从外部传入的第二个参数======%
  5. set /a res=%num1%+%num2%
  6. echo %num1%+%num2%=%res%
  7. pause>nul
复制代码
该批处理调用方法:在命令行下输入:f:\test.bat 2 3
则显示结果:2 + 3=5

2、批处理文件中标签支持的参数,调用方式类似1
下面主要对以上两种参数的书写规范和调用方式作个简单的示范。
演示代码(将以下代码保存为test.bat,双击运行):
  1. @echo off
  2. title 计算两个数字之和
  3. set /p num1=请输入第一个数字:
  4. set /p num2=请输入第二个数字:
  5. call :Sum %num1% %num2%
  6. pause>nul
  7. goto :eof  %========执行到这里就跳出;======%
  8. Rem 这里写一个求和的标签;
  9. Rem 该函数的调用方法:call :Sum 参数1 参数2;
  10. :Sum 参数1 参数2
  11. Rem %~1代表从外部传入的参数1;
  12. Rem %~2代表从外部传入的参数2;
  13. set /a num1=%~1,num2=%~2
  14. set /a res=%num1%+%num2%
  15. echo.
  16. echo %~1 + %~2 = %res%
复制代码

作者: myweb9169    时间: 2007-12-27 00:18

楼主快点处啊,小菜正需要啊,越详细越好
作者: novaa    时间: 2007-12-27 09:15

你不是说会把SHIFT也弄上去的吗。。
等着哦。。
速度啊。。
作者: youxi01    时间: 2008-1-1 17:56

已经更新,呵呵
作者: weixiaoyaer    时间: 2010-4-17 23:26

给你改了一下
@echo off
title 计算两个数字之和
set /p num1=请输入第一个数字:
set /p num2=请输入第二个数字:
call :Sum %num1% %num2%
pause>nul
goto :eof  %========执行到这里就跳出;======%
Rem 这里写一个求和的标签;
Rem 该函数的调用方法:call :Sum 参数1 参数2;
:Sum 参数1 参数2
Rem %~1代表从外部传入的参数1;
Rem %~2代表从外部传入的参数2;
set /a res=%num1%+%num2%
echo.
echo %num1%+%num2%=%res%
作者: jackmux    时间: 2012-6-4 12:46

请问后边的     num1=%~1,num2=%~2  怎么理解 ~1 为什么呢?什么意思呢?
作者: gawk    时间: 2012-6-4 13:42

回复 6# jackmux


    %~I         - expands %I removing any surrounding quotes (")
作者: jackmux    时间: 2012-6-7 14:50

回复 7# gawk


    这又是什么意思
作者: forfiles    时间: 2012-6-7 18:15

回复 8# jackmux


    删掉双引号




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2