从另一个传递参数调用批处理文件 [英] call batch file from another passing parameters

查看:125
本文介绍了从另一个传递参数调用批处理文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下批处理文件运行时,要求用户输入。这工作得很好。

I have the following batch file that when run asks the user for input. This works fine.

@REM Sample batch file
SET PARAM1=""
SET PARAM2=""
SET /P PARAM1=Enter param1: %=%
SET /P PARAM2=Enter param2: %=%
@REM Process the params

我希望现在能够从另一个调用此批处理文件和传递参数值以上的批处理文件,并且用户不会被要求输入。我怎样才能做到这一点?

I want to be able now to call this batch file from another and pass the parameters values to the above batch file, and the user wont be asked for input. How can I achieve this?

推荐答案

我相信你想这样的事情?

I believe you want something like this?

@echo off

:: Fetch param1
set "param1=%~1"
goto :param1Check
:param1Prompt
set /p "param1=Enter parameter 1: "
:param1Check
if "%param1%"=="" goto :param1Prompt

:: Fetch param2    
set "param2=%~2"
goto :param2Check
:param2Prompt
set /p "param2=Enter parameter 2: "
:param2Check
if "%param2%"=="" goto :param2Prompt

:: Process the params
echo param1=%param1%
echo param2=%param2%

不带参数运行TEST.BAT:

Test.bat run without arguments:

>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar

TEST.BAT与参数运行:

Test.bat run with arguments:

>>test.bat foo bar
param1=foo
param2=bar


替代,使用环境变量而不是命令行参数(见<一href=\"http://stackoverflow.com/questions/5883500/call-batch-file-from-another-passing-parameters/5883548#5883548\">ppumkin's答案):

关闭@echo

::取参数1结果
     设置参数1 =%globalparam1%结果
     转到:param1Check结果
     :param1Prompt结果
     集/ P参数1 =输入参数1:结果
     :param1Check结果
     如果%参数1%==GOTO:param1Prompt

:: Fetch param1
set "param1=%globalparam1%"
goto :param1Check
:param1Prompt
set /p "param1=Enter parameter 1: "
:param1Check
if "%param1%"=="" goto :param1Prompt

::取param2的结果
     设置参数2 =%globalparam2%结果
     转到:param2Check结果
     :param2Prompt结果
     集/ P参数2 =输入参数2:结果
     :param2Check结果
     如果%参数2%==GOTO:param2Prompt

:: Fetch param2
set "param2=%globalparam2%"
goto :param2Check
:param2Prompt
set /p "param2=Enter parameter 2: "
:param2Check
if "%param2%"=="" goto :param2Prompt

::进程PARAMS结果
     回声参数1 =%参数1%结果
     回声参数2 =%参数2%

:: Process the params
echo param1=%param1%
echo param2=%param2%

只要设置环境变量 globalparam1 globalparam2 在您的环境或调用批处理文件来共进晚餐preSS的提示:

Just set the environment variables globalparam1 and globalparam2 in your environment or your calling batch file to suppress the prompting:

无需设置环境变量TEST.BAT运行:

Test.bat run without setting environment variables:

>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar

TEST.BAT与设置环境变量运行:

Test.bat run with setting environment variables:

>>set globalparam1=foo

>>set globalparam2=bar

>>test
param1=foo
param2=bar

注:设置环境变量也可以在例如进行呼叫批处理脚本。

Note: setting the environment variables can also be done in e.g. a calling batch script.

这篇关于从另一个传递参数调用批处理文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆