Я пытаюсь выполнить приведенную ниже команду на cmd.exe с C#. Я пробовал следующие методы, но никто из них, похоже, не работает. Все они могут открыть CMD, но после этого ничего не происходит. Также, если я использую простые аргументы, такие как «/ C start winword», он работает только с методом 3.C# - Выполнение CMD.exe с аргументами, содержащими% VS110COMNTOOLS%
Также я попытался добавить/C и/K в строку аргумента, но они, похоже, не работают.
string argumentString = "\"%VS110COMNTOOLS%/../IDE/devenv.exe\" /diff " + "\"" + txt_File1.Text + "\" \"" + txt_file2.Text + "\"";
//string argumentString = "start winword";
// Method 1
System.Diagnostics.Process ExecuteCommand = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.UseShellExecute = true;
startInfo.Arguments = argumentString;
ExecuteCommand.StartInfo = startInfo;
ExecuteCommand.Start();
//Method 2
System.Diagnostics.Process.Start(@"cmd.exe", argumentString);
// Method 3
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", argumentString);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = false;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
Console.WriteLine(result);
Почему вы не начиная указанные исполняемые файлы напрямую? Я имею в виду, почему вы не делаете что-то вроде этого: startInfo.FileName = "winword.exe"? – Vitaliy
На самом деле я просто пытаюсь понять, открывается ли слово с использованием этого подхода. Я действительно хочу аргумент - «\»% VS110COMNTOOLS%/../IDE/devenv.exe \ "/ diff" + "\" "+ txt_File1.Text +" \ "\" "+ txt_file2.Text +" \ ""; – biswasprateek