2016-12-29 72 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"