回答
您可以將CD和批處理文件編碼爲cmd.exe/K的值。從DOCO(CMD /?):
注意,多個命令由命令分隔符「& &」 分離被接受爲字符串,如果由引號所包圍。
例如:
cmd /C "CD C:\ && Dir"
cmd /C "CD C:\Windows && Dir"
cmd /C "CD C:\Windows && MySuperSuperBatchFile"
對於更詳細地,運行:
cmd /?
從命令行。
由於高平臺獨立性原因,Java很難做到這一點:基本上,如果您在沒有分層目錄的系統上運行java,該怎麼辦?
根據您真正想要做什麼,有很多解決方法,但最簡單的方法是使用 java.lang.Runtime.exec()
運行最終命令。
。
將批處理文件保存在「路徑」中。你可以執行它而不需要去任何特定的目錄。
(例如,你可以有一個進入 「設置path =%PATH%; C:.......... \ YourBatchFile.bat」 Autoexec.bat中在Windows環境)
GET環境VAR「COMSPEC」然後exec的 %COMSPEC%/℃啓動/ d目錄/ b batchfile.bat
一對夫婦的java.lang.Runtime.exec()變化確實有一個dir參數,所以我假設你沒有想到的是什麼?
您可以編譯下面的C程序並作爲包裝器執行,以便在任何需要的目錄中啓動任何程序。如果在Runtime.exec中使用String數組,您將避免命令行解析/可移植性/正確引用參數的所有問題。
我沒有任何Windows機器在這裏測試,但如果你編譯C程序cdexe.exe你應該能夠使用它,如下所示:
public class Main {
public static void main(String args[]) {
String[] s = { "c:\\some\\place\\cdexe.exe",
"c:\\start\\dir", "c:\\my\\batch\\file.bat", "arg1", "..." };
try {
java.lang.Runtime.getRuntime().exec(s);
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
我猜unistd.h中可能在Windows上不可用,但只需替換一個包含execv原型的文件即可。
#include <stdio.h>
#include <unistd.h> // or hard code "int execv(const char *path, char *const argv[]);"
int main(int argc, char *argv[])
{
if (argc < 3) {
fprintf(stderr, "Error: Usage: %s <directory> <program> [arguments]\n", argv[0]);
return 1;
}
if (chdir(argv[1]) < 0) {
perror("Error");
fprintf(stderr, "chdir(%s) failed\n", argv[1]);
return 1;
}
argv[1] = argv[2];
execv(argv[1], &argv[2]); // use execvp if you want PATH to be searched
perror("Error");
fprintf(stderr, "execv returned\n");
return 0;
}
要警惕Java的exec。如果批處理過程填充輸出緩衝區並導致其他奇怪的問題,它可能會掛起。我建議你看看apache exec。特別爲了您的需要,您應該注意到Executor接口有一個setWorkingDirectory方法。
基本用法:
Executor exec = new DefaultExecutor();
exec.setWorkingDirectory(new File("C:\\My\\Dir\\"));
CommandLine cl = new CommandLine("mybatch.bat");
int exitvalue = exec.execute(cl);
- 1. 批處理文件來更改目錄,然後運行命令
- 2. 批處理文件在cmd目錄下運行命令
- 3. 命令提示符批處理文件
- 4. 如何在批處理文件的命令提示符下運行命令並繼續運行'n'秒?
- 5. 通過命令提示符更改沒有在批處理文件中執行的目錄「yo」命令
- 6. 運行在命令提示符下的批處理文件,但面對錯誤
- 7. 批處理文件:打開CMD,運行VS命令提示符下,執行Makecert
- 8. 如何更改目錄然後運行命令批處理文件?
- 9. 同時運行批處理文件命令提示符窗口閃爍
- 10. 從批處理文件所在的目錄位置開始批處理文件命令提示符
- 11. 運行並顯示telnet上的批處理文件命令
- 12. 更改目錄命令提示符
- 13. 執行批處理文件調用+ Visual Studio命令提示符
- 14. 如何在windows中運行批處理文件時關閉命令提示符
- 15. 通批處理文件ECHO到PUSHD命令提示符下命令
- 16. 在命令提示符下運行Python和記錄到文件
- 17. 使用命令提示符調用子目錄中的批處理文件
- 18. 批處理文件更改目錄
- 19. 在批處理模式下運行R腳本時彈出命令提示符
- 20. 隱藏命令在運行批處理文件時在命令提示符中顯示
- 21. 在Windows命令提示符下更改目錄
- 22. 從命令提示符運行批處理文件獲取錯誤
- 23. 將system32中的批處理文件目錄更改爲CMD命令執行點
- 24. 命令在命令提示符工作,但不是在批處理文件
- 25. 更改目錄並使用#!bin/bash文件運行命令
- 26. 代碼,在命令提示符並不在批處理文件工作
- 27. 更改目錄並在一個命令中執行文件
- 28. 如何更改目錄並在該目錄上運行命令?
- 29. t-sql腳本使用命令提示符運行批處理文件,但同樣不通過jenkins運行
- 30. 批處理文件||如何凍結命令提示符
可我有例子爲 – user48094 2009-02-13 02:38:15
非常有幫助!謝謝 – Maroun 2013-03-04 17:04:07
剛剛救了我的一天:D – 2015-08-17 07:31:37