Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51

Запустить cmd и запустить команду

29.06.2022, 23:30. Показов 1500. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как-то запустить cmd так, чтобы программно можно было указать какую команду запустить и было визуально видно её выполнение!! Чтобы это выглядело так после запуска программы.
Вот что сейчас есть
C#
1
2
3
4
5
6
7
ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = "cmd.exe";
            psi.CreateNoWindow = false;
            psi.UseShellExecute = false;
            psi.Arguments = "ping google.com -t";
            psi.WorkingDirectory = @"C:\Windows\System32\";
            Process.Start(psi);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2022, 23:30
Ответы с готовыми решениями:

Запустить и выполнить 2 команды в cmd
Хочу перейти в католог с нужной мне программой и запустить ее, но программа может находится на разных дисках, а чтобы выполнить start надо...

Запустить cmd приложение в скрытом режиме
Как запустить cmd приложение в скрытом режиме, тоесть нужен код который запускает существующий файл без окна, как vbs скрипт ( Set...

Как правильно запустить cmd с правами администратора?
Подскажите пожалуйста как правильно запустить cmd с правами администратора, поиск юзал, все пробовал - не то. У меня приложение через CMD...

13
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
29.06.2022, 23:56
Цитата Сообщение от Awdes Посмотреть сообщение
Можно ли как-то запустить cmd так, чтобы
C#
1
Process.Start(new ProcessStartInfo { FileName = "ping", Arguments = "google.com -t"});
0
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51
30.06.2022, 00:00  [ТС]
John Prick, а если нужно будет запустить другую команду, к примеру netstat -e или systeminfo
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
30.06.2022, 00:12
Цитата Сообщение от Awdes Посмотреть сообщение
а если нужно будет запустить другую команду, к примеру netstat -e или systeminfo
По-моему, очевидно.
C#
1
2
Process.Start(new ProcessStartInfo { FileName = "netstat", Arguments = "-e"});
Process.Start(new ProcessStartInfo { FileName = "systeminfo" });
0
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51
30.06.2022, 00:17  [ТС]
John Prick, оно не работает так, я уже пробовал. Оно их запускает, но сразу же закрывает, а в случаи с netstat, то там ничего не пишет и сразу же закрывает
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
30.06.2022, 00:30
Цитата Сообщение от Awdes Посмотреть сообщение
Оно их запускает, но сразу же закрывает
Конечно. Процесс-то выполняется сам по себе, а ваша программа заканчивается на запуске. Добавьте после запуска процесса Console.ReadLine().

Добавлено через 2 минуты
Либо, что более правильно, дожидайтесь окончания процесса с помощью process.WaitForExit()
0
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51
30.06.2022, 00:30  [ТС]
John Prick, я не в консольном приложении делаю, а в windows form. Пробовал уже process.WaitForExit()
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
30.06.2022, 00:33
C#
1
2
3
4
            var start = new ProcessStartInfo { FileName = "ping", Arguments = "google.com" };
            var process = new Process() { StartInfo = start };
            process.Start();
            process.WaitForExit();
0
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51
30.06.2022, 00:35  [ТС]
John Prick, с пингом работает, но вот что происходит с netstat: . Это если успеть кликнуть, ибо оно сразу же закрывается.
C#
1
2
Process p = Process.Start(new ProcessStartInfo { FileName = "netstat", Arguments = "-e" });
            p.WaitForExit();
0
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
30.06.2022, 09:16
Цитата Сообщение от Awdes Посмотреть сообщение
я не в консольном приложении делаю, а в windows form
Тогда надо перенаправлять вывод стандартного потока в какой-либо элемент формы:
C#
1
2
3
4
5
6
7
8
9
10
var p = Process.Start(new ProcessStartInfo
{
    FileName = "netstat",
    Arguments = "-e",
    RedirectStandartOutput = true,
    UseShellExecute = false
});
p.Start();
string output = p.StandartOutput.ReadToEnd();
textBox1.Text = output;
0
0 / 0 / 0
Регистрация: 07.05.2021
Сообщений: 51
30.06.2022, 11:33  [ТС]
John Prick, как прочитать вывод я уже сделал, мне нужно именно так, чтобы было визуально видно выполнение команды. Чтобы можно было нажать на кнопку и выбранная человеком команда начала выполняться и он мог следить за выводом сколько захочет времени.
0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
30.06.2022, 11:45
Цитата Сообщение от Awdes Посмотреть сообщение
John Prick, как прочитать вывод я уже сделал, мне нужно именно так, чтобы было визуально видно выполнение команды. Чтобы можно было нажать на кнопку и выбранная человеком команда начала выполняться и он мог следить за выводом сколько захочет времени.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (true)
                {
                    var result = Console.ReadLine();
                    var processInfo = new ProcessStartInfo()
                    {
                        UseShellExecute = false,
                        CreateNoWindow = false,
                        FileName = @"powershell.exe",
                        Arguments = result
                    };
                    Process process = new Process();
                    process.StartInfo = processInfo;
                    process.Start();
                    process.WaitForExit();
                }
дальше сами думаю разберетесь
Миниатюры
Запустить cmd и запустить команду  
1
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
30.06.2022, 12:25
Лучший ответ Сообщение было отмечено Awdes как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void Button_SendCommandText(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(db.OtherOptions["text_command"].DataOne))
                return;
 
            Task.Run(() =>
            {
                var processInfo = new ProcessStartInfo()
                {
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true,
                    FileName = @"powershell.exe",
                    Arguments = db.OtherOptions["text_command"].DataOne
                };
                Process process = new Process();
                process.StartInfo = processInfo;
                process.Start();
                StringBuilder stringBuilder = new StringBuilder();
                while (!process.StandardOutput.EndOfStream)
                {
                    string line = process.StandardOutput.ReadLine();
                    stringBuilder.AppendLine(line);
                    db.OtherOptions["config_1"].DataOne = stringBuilder.ToString();
                }
            });
        }
типа формочки
Миниатюры
Запустить cmd и запустить команду  
1
2 / 2 / 0
Регистрация: 20.05.2021
Сообщений: 150
11.07.2022, 15:54
Цитата Сообщение от Dr9vik Посмотреть сообщение
Запустить cmd и запустить команду
все тоже самое
Я не увидел по ссылке различий с моим кодом. :-(
Выше я привел мой фрагмент, касающийся собственно запуска процесса.
Вот более подробный фрагмент:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
           Task<int> t = Task<int>.Factory.StartNew(() =>
            {
                string workDir = Path.Combine(Directory.GetCurrentDirectory(), "1".ToString());
                string outText = "";
                int exitCode = -1;                
                StringBuilder stringBuilder = new StringBuilder();
             
                 using (Process pgmProcess = new Process())
                 {
                         pgmProcess.StartInfo.WorkingDirectory = workDir;
                         pgmProcess.StartInfo.FileName = Path.Combine(workDir, exeName);
                         pgmProcess.StartInfo.Arguments = "--file fw.bin > out.txt";
                         pgmProcess.StartInfo.UseShellExecute = false;
                         pgmProcess.StartInfo.CreateNoWindow = true;
                         pgmProcess.StartInfo.RedirectStandardOutput = false;
 
                         pgmProcess.Start();
                         pgmProcess.WaitForExit(150000);
 
                         exitCode = pgmProcess.ExitCode;
                         stringBuilder.AppendLine($"{DateTime.Now.ToString()}, exitCode:{exitCode}\r\n");
                         stringBuilder.AppendLine($"out: {pgmProcess.StandardOutput}\r\n");
                       
                         // сохраняем результат процесса в файл
                         using (StreamWriter sw = File.CreateText(Path.Combine(workDir, "log.txt")))
                         {
                               sw.Write($"exitCode:{exitCode}");
                               sw.Write(stringBuilder.ToString());
                         }                       
                     } 
                 }
                 return exitCode;
            });
Так вот, если я запускаю утилиту через консоль:
"exeName -- file FW.bin > out.txt",
то она формирует файл out.txt с содержимым:
[+] enter boot mode OK
[+] uploading firmware
[+] this may take several minutes, do not disconnect the device
[+] firmware uploaded successfully!

А при выполнении приведенного выше кода с той же самой командной строкой StandardOutput выглядит как:
11.07.2022 15:37:45, exitCode:0
out: System.IO.StreamReader

Т.е. это stdout процесса, а не утилиты!
Как достать вывод на консоль утилиты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.07.2022, 15:54
Помогаю со студенческими работами здесь

Как из формы запустить CMD ping "IP"
Подскажите как из формы запустить CMD ping &quot;IP&quot;

Как запустить команду ASP из клиентского скрипта?
Как запустить команду ASP из клиентского скрипта? Или из клиентского (браузерного) объекта. Формы и QuerString это немного не-то Можно ли...

Как запустить код в одном окне cmd?
Для примера код на C#. Этот код открывает 10 окон cmd. А нужно, чтобы он все делал в 1 окне. Если Process.Start(psi) написать после цикла,...

Каким образом можно запустить cmd.exe и выполнить в ней некоторые команды?
Всем привет! Каким образом можно в c# запустить cmd.exe и выполнить в ней некоторые команды?

Запустить cmd и передать ей команду
Надо такой bat-ник, чтобы запускал cmd и передавал в неё команду, например &quot;python Python.py&quot;. Как запустить cmd знаю: start cmd, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru