2016-12-29 129 views
0

我正在尝试创建一个批处理脚本,它将从用户接收两个输入参数并传递这些参数以调用一个脚本,该脚本又应该调用另一个脚本。我是批量脚本新手。我已经写了下面的代码,但最终的脚本失败了。它不会正确获得用户发送的参数。使用来自用户的参数运行批处理文件

流程如下: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

所以,你发现了什么文件是什么问题?你调试/回应变量吗? – moffeltje

回答

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" 
相关问题