使用从用户获取的参数运行批处理文件

时间:2016-12-29 10:29:16

标签: batch-file scripting

我正在尝试创建一个批处理脚本,该脚本将从用户获取两个输入参数并传递这些参数以调用一个脚本,而脚本又调用另一个脚本。我是批处理脚本的新手。我为此编写了以下代码,但最终脚本失败了。它没有正确获取用户发送的参数。

流程如下:userInput.bat调用mybat.bat,调用startTask.bat

userInput.bat的代码:

set /p userName="Enter the userName: "
echo %userName%
set /p dateofbirth="Enter the dateofbirth: "
echo %dateofbirth%
CALL mybat.bat %userName% %dateofbirth% 

mybat.bat的代码:

CALL startTask.bat %1 "myHouseAddress" %2
CALL startTask.bat %1 "myOfficeAddress" %2

startTask.bat的代码:

java -classpath joda-time-1.6.jar com.mycode.somecode.KickOffTask %1 %2 %3

1 个答案:

答案 0 :(得分:1)

您的脚本似乎工作正常,除非该脚本只是程序的一部分

我做了一些改进:

  • %username%更改为%user%,因为%username%是预定义变量
  • 添加了错误检查
  • 添加了对变量空格的支持

<强> userinput.bat:

@echo off
:query.user
    set "user="
    set /p user="Enter the username: "
    if not defined user (goto query.user) else (echo user=%user%)

:query.dateofbirth
    set "dateofbirth="
    set /p dateofbirth="Enter dateofbirth: "
    if not defined dateofbirth (goto query.dateofbirth) else (echo dateofbirth=%dateofbirth%)

call mybat.bat "%user%" "%dateofbirth%"

<强> mybat.bat:

@echo off
call startTask.bat "%~1" "myHouseAddress" "%~2"
call startTask.bat "%~1" "myOfficeAddress" "%~2"

<强> startTask.bat:

@echo off
java -classpath joda-time-1.6.jar com.mycode.somecode.KickOffTask "%~1" "%~2" "%~3"