2015-03-31 42 views
0

說我有一個名爲check.bat的批處理文件。我使用的命令Batchh文件參數處理

Runtime.getRuntime().exec("cmd /c start C:\\check.bat"); 

它運行沒有問題的批處理文件,java的運行它。但是,當我將參數傳遞給該批處理文件等,

調用Runtime.getRuntime()EXEC鍵。( 「CMD/C開始C:\ check.bat ARG1參數3 ARG4」);

我想訪問check.bat裏面的這些參數 我知道%*得到了我所有的參數。但我想要的是除了最後一個參數以外的所有參數作爲單個變量。 非常新的批處理文件。請幫忙。

回答

0

由SomethingDark(你調用批處理文件之前組合參數)提出的第一種方法可能是最好的,但如果你不能夠使用它,以下內容可能有助於(您可能需要試驗如果你的參數包含有特殊含義到Windows字符):

@echo off 
     setlocal 
     set ALLBUT1= 
     if "%~2" == "" goto :gotthem 
     set ALLBUT1=%1 
:loop 
     shift 
     if "%~2" == "" goto :gotthem 
     set "ALLBUT1=%ALLBUT1% %1" 
     goto :loop 
:gotthem 
     set "LAST=%1" 

     echo All-but-one:%ALLBUT1%: 
     echo Last:%LAST%: 

這給:

S:\>arg one two three 
All-but-one:one two: 
Last:three: 

S:\>arg one two three four 
All-but-one:one two three: 
Last:four: 
+0

非常感謝。工作超細:) – 2015-04-01 06:34:18

0

通常情況下,你就可以通過把它們放在引號像check.bat "arg1 arg2 arg3" arg4

由於這是在Java中取前三個參數是一個巨大的說法,你應該能夠引用一些逃進exec命令,像Runtime.getRuntime().exec("cmd /c start C:\check.bat \"arg1 arg2 arg3\" arg4");

如果由於某種原因不起作用,你總是可以批量使用四個參數,並在批處理腳本內執行任何你想要的操作。

@echo off 
set first_three="%1 %2 %3" 
set last_one=%4