找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34615|回复: 9

[原创] 批处理参数点点谈

[复制链接]
发表于 2007-12-26 22:17:47 | 显示全部楼层 |阅读模式
作者:youxi01@bbs.bathome.net,转载请注明;

这里的参数是我们常见的 %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%
复制代码
发表于 2007-12-27 00:18:03 | 显示全部楼层
楼主快点处啊,小菜正需要啊,越详细越好
发表于 2007-12-27 09:15:46 | 显示全部楼层
你不是说会把SHIFT也弄上去的吗。。
等着哦。。
速度啊。。
 楼主| 发表于 2008-1-1 17:56:59 | 显示全部楼层
已经更新,呵呵
发表于 2010-4-17 23:26:32 | 显示全部楼层
给你改了一下
@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%
发表于 2012-6-4 12:46:48 | 显示全部楼层
请问后边的     num1=%~1,num2=%~2  怎么理解 ~1 为什么呢?什么意思呢?
发表于 2012-6-4 13:42:50 | 显示全部楼层
回复 6# jackmux


    %~I         - expands %I removing any surrounding quotes (")
发表于 2012-6-7 14:50:36 | 显示全部楼层
回复 7# gawk


    这又是什么意思
发表于 2012-6-7 18:15:04 | 显示全部楼层
回复 8# jackmux


    删掉双引号
发表于 2025-5-27 10:21:08 | 显示全部楼层
@echo off
set /p num1=请输入第一个参数:
set /p num2=请输入第二个参数:
call :summ %num1% %num2%
pause>Nul && goto :eof

:summ
set /a sum=%~1+%~2
echo 总和是:%sum%
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:09 , Processed in 0.019309 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表