В этом случае проблема, вероятно, заключается только в том, что у вас не хватает пробела после "/c".
var processStartInfo = new ProcessStartInfo("cmd", "/c " + commandString);
Что касается просмотра в командном окне, то вам, вероятно, будет лучше проверить свойство Arguments
вашего экземпляра processStartInfo
.
EDIT
Принимая во внимание подробности командной строки, которые вы разместили, я думаю, что это ваша проблема. Проверьте следующее из справки cmd:
Если указано / C или / K, то остаток командной строки после
переключатель обрабатывается как командная строка, где следующая логика
используется для обработки символов кавычки ("):
Если выполнены все следующие условия, заключите в кавычки символы
в командной строке сохраняются:
- нет / S переключатель
- ровно две кавычки
- без специальных символов между двумя кавычками,
где специальное - одно из: & <> () @ ^ |
- между одним или несколькими пробельными символами
две кавычки
- строка между двумя символами кавычек - это имя
исполняемого файла.
Поскольку вы используете / c, у вас все еще есть проблемы с цитатами и специальными символами. Попробуйте обернуть все ваши commandString
в набор цитат.
Возьмем, к примеру, этот простой пример (конечно, создавая temp.txt вручную):
string commandString = @"""C:\WINDOWS\Notepad.exe"" ""C:\temp.txt""";
var processStartInfo = new ProcessStartInfo("cmd", "/c " + commandString);
Командная строка, которая будет выполнена: /c "C:\WINDOWS\Notepad.exe" "C:\temp.txt"
, но это не удастся, поскольку "C: \ temp.txt" не является исполняемым файлом.
Если вы заключите все это в один последний набор цитат, вы должны увидеть ожидаемый результат:
string commandString = @"""""C:\WINDOWS\Notepad.exe"" ""C:\temp.txt""""";
var processStartInfo = new ProcessStartInfo("cmd", "/c " + commandString);
В результате в командной строке: /c ""C:\WINDOWS\Notepad.exe" "C:\temp.txt""
и, в конечном итоге, открытие блокнота с тестовым файлом.