【发布时间】:2014-09-17 10:05:10
【问题描述】:
在批处理文件中给出以下命令:
start /wait "" %1"Certs\makecert.exe" -n "CN="%2 -pe -ss Root -sr LocalMachine -sky exchange -m 120 -a sha1 -len 2048 -r
您可以看到它需要将两个参数传递到批处理文件中。第一个是文件夹地址,第二个是正在创建的证书的主题名称。问题出在文件夹地址有空格的地方:C:\Program Files (x86)。
启动批处理文件的代码如下:
private void UseBatchFile(string filePath, string parameters)
{
using (Process process = new Process()
{
StartInfo = new ProcessStartInfo()
{
UseShellExecute = false,
CreateNoWindow = true,
FileName = filePath,
Arguments = parameters,
}
})
{
process.Start();
process.WaitForExit();
}
}
传入的参数如下所示:
"C:\\Program Files (x86)\\ TestCA"
批处理文件将在 C:\Program 中读取,因为它是解析为
的第一个参数C:\ProgramCerts\makecert.exe
我尝试将字符串参数地址包含在 '' 中,并在批处理文件中使用 %~1 来删除引号。这也没有任何作用。 我无法使用 %1%2%3 创建完整地址,因为可以将其他文件路径输入到此批处理文件中。
如何将地址作为一个参数传递?
编辑:该方法被调用如下:
this.UseBatchFile(string.Format("{0}{1}", PathName, @"Certs\CACert.bat"), string.Format("{0} {1}", PathName, "TestCA"));
路径名是:C:\Program Files (x86)
【问题讨论】:
-
很难说问题出在哪里。你能发布你是如何调用这个方法的吗?您可能还需要将 %1 放在引用中,但您可能会遇到引用地狱和安全问题?
-
@lc。编辑了如何调用该方法的答案。
标签: c# batch-file