kanekhan Ответов: 5

Запуск команд командной строки с помощью C#


Всем Привет,

Ниже приведена команда для запуска open jmeter из командной строки,

D:\JMeter\apache-jmeter-2.8\bin>для JMeter -Т D:\TestRun.jmx

Я хочу запустить эту команду из консольного приложения visual studio с помощью C#.

Любая идея о том, как это сделать.

Заранее спасибо,
Кейн

5 Ответов

Рейтинг:
36

Abhinav S

Используйте System Process класс[^] для запуска командного окна.

Попробуй

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "D:\JMeter\apache-jmeter-2.8\bin\jmeter -t D:\TestRun.jmx";
process.StartInfo = startInfo;
process.Start();


Espen Harlinn

5 ЕД!

Abhinav S

Спасибо, Эспен.

kanekhan

Привет Абхинав,

Приведенный выше код не работает, эта команда открывает графический интерфейс jmeter, но с приведенным выше кодом ничего не происходит.
Я думаю, что командная строка не может изменить каталог с C: на D:
Есть идеи, чего там не хватает?

С уважением,
Кейн

sjelen

Я думаю, что ошибка была в строке аргументов, это было:
D:\JMeter\apache-jmeter-2.8\bin>для JMeter -Т D:\TestRun.jmx
должно быть:
D:\JMeter\apache-jmeter-2.8\bin\jmeter -Т D:\TestRun.jmx

Я поправил его.
Также смотрите мое альтернативное решение.

Thomas Daniels

Привет,

Это не сработает, потому что вы должны добавить <small>/c</small> как аргумент перед другими аргументами. Пожалуйста, посмотрите мой ответ.

Рейтинг:
33

Thomas Daniels

Привет,

Ответ Абхинава не сработает, потому что если вы хотите запустить процесс с помощью cmd.exe, то вы должны добавить аргумент /c перед другими аргументами потому что /c выполняет команду, указанную строкой, а затем завершает работу.
Итак, вместо

startInfo.Arguments = "D:\JMeter\apache-jmeter-2.8\bin\jmeter -t D:\TestRun.jmx";

писать
startInfo.Arguments = "/c D:\JMeter\apache-jmeter-2.8\bin\jmeter -t D:\TestRun.jmx";

Надеюсь, это поможет.


Рейтинг:
20

Azziet

This is all you have to do run shell commands from C#

string strCmdText;
strCmdText= "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);
EDIT:

This is to hide the cmd window.

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
process.StartInfo = startInfo;
process.Start();


kanekhan

Привет Аззиет,

Я использовал приведенный ниже код,

Система.Диагностика.Процесс процесс = новая система.Диагностика.Процесс();
Система.Диагностика.ProcessStartInfo startInfo = новая система.Диагностика.Изменение панели();
свойство StartInfo.WindowStyle = Система.Диагностика.ProcessWindowStyle.Скрытый;
свойство StartInfo.Имя файла = "cmd.exe";
свойство StartInfo.Аргументы = "D:\JMeter\apache-jmeter-2.8\bin>jmeter -t D:\TestRun.jmx";
процесс.Информацию = информацию;
процесс.Начать();

Но это не работает. Есть какие-нибудь идеи о том, чего не хватает?

С уважением,
Кейн

Рейтинг:
1

sjelen

Другие решения верны. Возможно, есть проблема с установкой аргументов для пакетного файла. Попробуйте эту модификацию:

System.Diagnostics.Process.Start("D:\\JMeter\\apache-jmeter-2.8\\bin>jmeter.bat");

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "D:\\JMeter\\apache-jmeter-2.8\\bin>jmeter.bat";
startInfo.Arguments = " -t D:\TestRun.jmx";
process.StartInfo = startInfo;
process.Start();


kalaivanan from Bangalore, India

Привет, я использую приведенный ниже код, чтобы открыть изображение, в windows 7. но его работа, любая идея, где проблема.

Система.Диагностика.Процесс процесс = новая система.Диагностика.Процесс();
Система.Диагностика.ProcessStartInfo startInfo = новая система.Диагностика.Изменение панели();
//свойство StartInfo.WindowStyle = Система.Диагностика.ProcessWindowStyle.Скрытый;
свойство StartInfo.Имя Файла = "CMD.exe";
свойство StartInfo.Аргументы = "E:\final.jpg";
процесс.Информацию = информацию;
процесс.Начать();

Рейтинг:
0

Member 10749662

hi this is suvarnaraju from india<pre lang="c#">

это решение подходит для преобразования таблицы prostgres в shapedata
строку символ = "\"";
Система.Диагностика.Процесс процесс = новая система.Диагностика.Процесс();
Система.Диагностика.ProcessStartInfo startInfo = новая система.Диагностика.Изменение панели();
//свойство StartInfo.WindowStyle = Система.Диагностика.ProcessWindowStyle.Скрытый;
свойство StartInfo.Имя файла = "C:\\Program файлы (x86)\\pgAdmin III\\1.14\\bin\\pgsql2shp.exe";
//свойство StartInfo.Имя Файла = "D:\\suvarnaraju\\pgsql2shp.exe";
startInfo.Arguments = "-f" + simbol + "D: \\ suvarnaraju \\ smallpoly.shp" + simbol + "-h 172.16.45.45 -u sxd -P sxd momacpp_213_live" + simbol + "SELECT id, orig_evidence_id, orig_database_id , partition_ref_id, dataset_ref_id, morton_code, max_road_class, confidence_hsp, status_id, status_update_user, status_update_timestamp, checkout_lock, Guid, area_index, долгота, широта, project_id, ST_GEOMFROMTEXT ( 'LINESTRING (-122,17675841345 +47,5835549758457, -122,176540306996 +47,9954608782427, -122,47782707008426 +48,781405510842475, -101,12792269989149 +39,788612687934005, -92.8553282080493 38.9352617503735, -73.9429490726049 40.848649244561, -77.05900691901427 37.80297740209517) ') FROM workflow.evidence_to_do limit 100 "+ simbol +" ";
startInfo. UseShellExecute = false;
процесс.Информацию = информацию;
процесс.Начать();