Tôi đang gặp khó khăn khi thực hiện một tệp lô trong Java mà hy vọng các tham số. Các tham số này có thể chứa các khoảng trắng vì vậy tôi cần bọc chúng trong dấu ngoặc kép. Tôi cũng sẽ cần phải làm điều tương tự cho Linux vì một số tham số có thể chứa các ký tự đặc biệt như !
. mã WindowsThực hiện với các tham số
phi chức năng:
ProcessBuilder pb = new ProcessBuilder(
"cmd",
"/c",
"\"mybat.bat\"",
"\"param 1\"",
"\"param 2\"",
"\"param 3\""
);
phi chức năng mã Linux:
ProcessBuilder pb = new ProcessBuilder(
"bash",
"-c",
"'myshellscript.sh'",
"'param 1'",
"'param 2'",
"'param 3'"
);
Tôi hiểu rằng tôi nên có thêm các thông số như ví dụ của Windows dưới đây, nhưng điều này sẽ không làm việc với các không gian:
ProcessBuilder pb = new ProcessBuilder(
"cmd",
"/c",
"mybat.bat param 1 param 2 param 3"
);
Điều này nên được thực hiện như thế nào?
Không bạn đặt chúng trong dấu ngoặc kép cho rằng lý do chính xác? Tại sao bạn không làm điều đó cho đoạn trích cuối cùng của mình? – zneak
Tôi đang cố gắng làm cho hai đoạn đầu tiên hoạt động. Đoạn thứ ba sẽ chuyển 6 tham số tới mybat.bat khi tôi chỉ tìm ba thông số. –