2010-09-29 154 views
4

昨天我問了這個post,但是當我嘗試從我的java項目運行這個.bat文件時,我仍然遇到問題。如何從java項目獲取.bat文件中的參數

@echo off 
set filename=%1 
echo %filename | sed 's/\([A-Z]\)/ \1/g'; 

我做的調用是:

String param = "myparam"; 
ProcessBuilder pb = new ProcessBuilder("myFile.bat", param); 

但什麼myFile.bat確實是只打印%filename,所以它並不需要我送帕拉姆的真正價值。
我做錯了什麼? 在此先感謝

我也

@echo off 
set filename=%1 
echo %filename% | sed 's/\([A-Z]\)/ \1/g'; 

試着用同樣的結果,現在它打印%filename%

在調用中可能存在一些問題?

回答

1

您可能想要執行cmd.exe /c script.bat而不是,以便cmd.exe(命令shell)將展開變量。在Windows中,.bat文件不是完整的可執行文件,只是命令處理器的輸入文件(cmd.exe)。

+0

我得到這個錯誤在我的eclipse控制檯: 無法運行程序「cmd/c myscript.bat」(在目錄「mydirectory」):錯誤= 2,沒有這樣的文件或目錄。 但當然,myscript.bat是在該目錄 – 2010-09-29 11:53:18

+0

嘗試拆分命令中的幾個字符串:'(「cmd.exe」,「/ c」,「script.bat」)' – Grodriguez 2010-09-29 11:57:22

+0

謝謝!是的。 – 2010-09-29 14:52:58

1

您錯過了第二個%。應該是:

echo %filename% | sed 's/\([A-Z]\)/ \1/g';

+0

我試過了。相同的結果,但現在它打印%filename% – 2010-09-29 10:20:18

+0

你在Windows cmd提示符下運行bat文件嗎? – dogbane 2010-09-29 10:32:58

1

%filename缺少%底。它應該是:%filename%