System.Diagnostics.Process proc0 = new System.Diagnostics.Process();
proc0.StartInfo.FileName = "cmd";
proc0.StartInfo.WorkingDirectory = Path.Combine(curpath, "snd");
proc0.StartInfo.Arguments = omgwut;
现在有些背景......
string curpath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
omgwut是这样的:
copy / b a.wav + b.wav + ... + y.wav + z.wav output.wav
根本没有任何事情发生。显然有些不对劲。我也尝试“复制”作为可执行文件,但这不起作用。
答案 0 :(得分:16)
尝试使用/C
为cmd添加前缀,有效地说cmd /C copy /b t.wav ...
根据cmd.exe /?
使用
/C <command>
执行指定的命令 字符串然后终止
对于您的代码,它可能看起来像
// ..
proc0.StartInfo.Arguments = "/C " + omgwut;
备注:强>
cmd.exe copy ...
,您会看到副本没有发生。2,003
个字符,.NET Compact Framework应用程序中为488
个字符。”System.IO
类打开文件并手动连接它们来绕过shelling out命令。答案 1 :(得分:4)
试试这可能对你有帮助..它使用我的代码。
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
// Display the command output.
Console.WriteLine(result);
}
catch (Exception objException)
{
// Log the exception
}
答案 2 :(得分:1)
即使你可以尝试这个......这更好。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.FileName="iexplore";
proc.StartInfo.Arguments="http://www.microsoft.com";
proc.Start();
proc.WaitForExit();
MessageBox.Show("You have just visited " + proc.StartInfo.Arguments);
答案 3 :(得分:0)
Daniels cmd / c的想法会起作用。请记住,在您的情况下,命令行的长度可能只有8k,有关详细信息,请参阅this。
因为你在.Net应用程序中,File.Copy可能比这种方法更容易/更清洁。