带参数的c#进程不工作
本文关键字:工作 进程 参数 | 更新日期: 2023-09-27 18:08:37
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = false;
psi.UseShellExecute = false;
psi.FileName = "convert.exe";
psi.WorkingDirectory = @"C:'Users'Der'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'";
psi.Arguments = " icone.gif -fuzz 10% -transparent white icone.ico";
Process.Start(psi);
如果我尝试运行这个没有发生,但如果去到那个路径并输入convert.exe icone.gif -fuzz10% -transparent10% white icone.ico
它工作。我做错了什么?
我放弃了,做了一个bat文件,它工作了。
var p = new System.Diagnostics.Process();
p.StartInfo.FileName = @"C:'Users'LL'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'icone.bat";
p.StartInfo.WorkingDirectory = @"C:'Users'LL'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();
这是因为c#将StartInfo参数作为Unicode传递,而您的程序"convert.exe"不处理Unicode参数的解释。当你通过批处理文件调用它时,它不会将参数作为Unicode传递。
下面的链接似乎解决了您的问题。附代码示例。
由Process.Start()启动的应用程序没有得到参数
所以,在我的机器上试用LINQPad,我认为这可能是对工作目录的误解。工作目录不是文件的位置,它是文件应该认为它正在运行的位置。尝试删除该行并在FileName中指定完整路径。