2016-09-23 62 views
0

我想用java命令運行批處理文件。 我有以下代碼在java中執行帶有args的批處理文件

Runtime.getRuntime().exec("cmd /c start C:\\temp\\Sept_2016\\22Sept\\filecompare.bat"); 

我filecompare.bat命名如下

fc "C:\temp\Sept_2016\22Sept\MSP_Files\msp.txt" "C:\temp\Sept_2016\22Sept\MIB_Files\mib.txt">>"C:\temp\Sept_2016\22Sept\mismatch.txt" 

這工作按批處理文件預期和輸出都存儲在txt文件。

現在我不想使用上面的硬編碼值我想從Java程序中獲取值。所以我寫Java代碼如下

String file1 = new String("C:\\temp\\Sept_2016\\22Sept\\MSP_Files\\msp.txt"); 
String file2 = new String("C:\\temp\\Sept_2016\\22Sept\\MIB_Files\\mib.txt"); 
String file3 = new String("C:\\temp\\Sept_2016\\22Sept\\mismatch.txt"); 
Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start C:\\temp\\Sept_2016\\22Sept\\filecompare.bat", file1, file2, file3}); 

在類似的路線,我修改批處理文件

fc %4 %5>>%6 

但這似乎並不奏效。它只是打開dos窗口。

你能幫我實現嗎? 在此先感謝

+2

您只傳遞3個參數爲什麼使用'%4','%5'和'%6'? – talex

+0

1)「cmd.exe」, 2)「/ c」, 3)「start C:\\ temp \\ Sept_2016 \\ 22Sept \\ filecompare.bat」, 4) )file1, 5)file2, 6)file3 – Sachin

+0

我相信你的String []的前三個元素應該連接在一起。順便說一句,爲什麼你不能串聯所有的字符串,只傳遞一個字符串? – freefall

回答

1

fc %4 %5>>%6替換爲fc %1 %2>>%3

filecompare.bat正在執行只知道它自己的參數,而不是你傳遞給cmd的參數。

+0

嘿塔利克斯,謝謝你。非常感謝。它正在工作。我現在看到的唯一問題是它打開了2個命令提示符。對此有何想法? – Sachin

+0

因爲建議從參數中刪除'start'。 – talex

+0

刪除開始,但它打開單個命令提示符,但它不處理我的命令,它只是打開單個命令提示符 – Sachin