使用参数执行批处理文件 - [Java - OpenSSL]
Batch file execution with parameter - [Java - OpenSSL]
我正在尝试在 .bat 文件中使用 openSSL 命令生成证书并从 Java 代码调用它 -
String loc = "C:\Users\xyz\Desktop\myFolder\bin";
String subject = "/C=GB/ST=London/L=London/O=Global Security/OU=software/CN=blah/emailAddress=a.b@xyz.com";
List<String> cmds = Arrays.asList("cmd.exe", "/C", "start C:/Users/xyz/Desktop/myBat.bat", loc, subject);
ProcessBuilder builder = new ProcessBuilder(cmds);
Process proc = builder.start();
myBat.bat
set root=%1
cd /D %root%
set arg2=%2
openssl req -new -out server.csr -key server.key -config openssl.cnf -subj %arg2%
从 java 代码传递的主题不允许我执行 bat 文件?
我尝试转义正斜杠但出现同样的错误。
如何通过 java 代码将 -subj[openSSL] 传递给 bat 文件。
注意 - 这工作正常[硬编码]
openssl req -new -out server.csr -key server.key -config openssl.cnf -subj "/C=GB/ST=London/L=London/O=Global Security/OU=software/CN=blah/emailAddress=a.b@xyz.com"
试试这个,你的过程有 3 个参数,第三个需要是将传递给 cmd.exe
的单个命令,并且在该命令中你需要在主题周围加上引号:
List<String> cmds = Arrays.asList(
"cmd.exe",
"/C",
"start C:/Users/xyz/Desktop/myBat.bat " + loc + " \"" + subject + "\""
);
我正在尝试在 .bat 文件中使用 openSSL 命令生成证书并从 Java 代码调用它 -
String loc = "C:\Users\xyz\Desktop\myFolder\bin";
String subject = "/C=GB/ST=London/L=London/O=Global Security/OU=software/CN=blah/emailAddress=a.b@xyz.com";
List<String> cmds = Arrays.asList("cmd.exe", "/C", "start C:/Users/xyz/Desktop/myBat.bat", loc, subject);
ProcessBuilder builder = new ProcessBuilder(cmds);
Process proc = builder.start();
myBat.bat
set root=%1
cd /D %root%
set arg2=%2
openssl req -new -out server.csr -key server.key -config openssl.cnf -subj %arg2%
从 java 代码传递的主题不允许我执行 bat 文件? 我尝试转义正斜杠但出现同样的错误。
如何通过 java 代码将 -subj[openSSL] 传递给 bat 文件。
注意 - 这工作正常[硬编码]
openssl req -new -out server.csr -key server.key -config openssl.cnf -subj "/C=GB/ST=London/L=London/O=Global Security/OU=software/CN=blah/emailAddress=a.b@xyz.com"
试试这个,你的过程有 3 个参数,第三个需要是将传递给 cmd.exe
的单个命令,并且在该命令中你需要在主题周围加上引号:
List<String> cmds = Arrays.asList(
"cmd.exe",
"/C",
"start C:/Users/xyz/Desktop/myBat.bat " + loc + " \"" + subject + "\""
);