Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516

Как программно запустить выполняемую команду в командной строке

08.08.2020, 14:25. Показов 4341. Ответов 15

Студворк — интернет-сервис помощи студентам
Всем привет. Вопрос в следующем,есть выполняемая строка "netsh wlan show interface".Я ее запускаю в CMD через Win + R и получаю результат (см.миниатюру).А как это сделать программно? Перелопатил кучу инфы,но ничего полезного не нашел.Написал такой код
Кликните здесь для просмотра всего текста
VB.NET
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Public Class Form1
    Dim Pu As String = "Zap.txt"
    Dim Arr(), V, Arr1() As String
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            'клавы на английский
            System.Windows.Forms.InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System _
             .Globalization.CultureInfo.GetCultureInfo(1033))
 
            If IO.File.Exists(Pu) Then
                Arr = IO.File.ReadAllLines(Pu, System.Text.Encoding.Default)
                Proverka(Arr)
            Else
                IO.File.Create(Pu)
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    Sub Proverka(ByVal GV() As String)
 
        Dim q1 As String
        Try
            GV = (IO.File.ReadAllLines(Pu, System.Text.Encoding.Default))
            Dim mass13 = From nn In GV Where Strings.LTrim(nn) <> "" 'создаем новый массив с условием
            For i = 0 To mass13.Count - 1
                q1 = mass13(i)
                ListBox1.Items.Add(q1)
            Next
            Label1.Text = "Всего: " & mass13.Count
            IO.File.WriteAllLines(Pu, mass13, System.Text.Encoding.Default)
        Catch ex As Exception
            FileOpen(1, Pu, OpenMode.Append)
            Print(1, "", vbNewLine)
            FileClose()
        End Try
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
        Dim Proc() As Process
        Dim ModuleName, ProcName As String
        ModuleName = "cmd.exe"
        ProcName = System.IO.Path.GetFileNameWithoutExtension(ModuleName)
        Proc = Process.GetProcessesByName(ProcName)
        If Proc.Length > 0 Then
 
        Else
            Process.Start("cmd")
        End If
 
    End Sub
 
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim V1, V2 As String
        Try
            V = ListBox1.SelectedItem
            Dim ch() As Char = V.ToCharArray
            For i = 0 To ch.Length - 1
                If ch(i) <> "1" Then
                    V2 += CStr(ch(i))
                Else
                    Exit For
                End If
            Next
            V = Strings.Trim(V2)
 
            My.Computer.Clipboard.SetText(V)
            V1 = My.Computer.Clipboard.GetText
            Label1.Text = V1
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        For i = 0 To ListBox1.Items.Count - 1
            ReDim Preserve Arr(i)
            Arr(i) = ListBox1.Items.Item(i)
        Next
        IO.File.WriteAllLines(Pu, Arr, System.Text.Encoding.Default)
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If TextBox1.Text <> "" Then
            ListBox1.Items.Add(TextBox1.Text)
        End If
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Process.Start(Pu)
     End Sub
 
End Class

Но это немного не то.Можно как нибудь сделать ,что бы выделив нужную строку дальше все выполнялось программно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.08.2020, 14:25
Ответы с готовыми решениями:

Как в выполняемую программу передать команду?
#!/bin/bash/ myapp -p para1 param2 sleep 60 exit -y Как передать exit в myapp спустя какой то промежуток времени?

Как выполнить команду fn+f2 в командной строке
Скажите пожалуйста как выполнить команду fn+f2 в командной строке, то есть мне нужно что б экран погас , но я мог на нем ...

Как выполнить команду в командной строке?
Я написал чтоб он выполнил одну команду, но после нее мне нужно чтоб он еще сделал несколько. Как мне это сделать? Вот мой код: ...

15
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 14:27  [ТС]
Миниатюра
Миниатюры
Как программно запустить выполняемую команду в командной строке  
1
118 / 107 / 17
Регистрация: 10.02.2013
Сообщений: 278
08.08.2020, 14:44
Я думаю нужно поискать решение, которое не использует командную строку, вот пример:
Вывести список всех сетевых адаптеров
1
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 15:11  [ТС]
Leksar, Хотелось бы все таки через cmd,чтобы прога была универсальной.Я для этого и добавил сохранение таких команд.
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
08.08.2020, 15:15
Тим70, выполняете команду в cmd, забираете результат, парсите, выводите то, что нужно
1
3257 / 3275 / 556
Регистрация: 17.02.2019
Сообщений: 5,184
08.08.2020, 16:28
Лучший ответ Сообщение было отмечено Тим70 как решение

Решение

Тим70, а если так попробовать
VB.NET
1
2
Dim aaa As String = "netsh wlan show interface"
        Process.Start("cmd.exe", "/k" & aaa)
2
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 16:57  [ТС]
Orlangur, Выполнить команду в cmd получилось,спасибоJanuary29, а как теперь забрать результат,не подскажете?
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
08.08.2020, 17:07
Тим70, ищите по форуму RedirectStandardOutput, там много примеров
2
3257 / 3275 / 556
Регистрация: 17.02.2019
Сообщений: 5,184
08.08.2020, 17:09
Тим70, там для С#
Получение ответа из командной строки
2
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 19:13  [ТС]
January29, Попробовал ваш пример,перевел
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
 
        'netsh wlan show interface
        Dim p As Process = New Process()
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "netsh"
        p.StartInfo.Arguments = "wlan show interface"
        p.Start()
        Dim output As String = p.StandardOutput.ReadToEnd()
        p.WaitForExit()
        IO.File.WriteAllText(Pu1, output, System.Text.Encoding.Default)
 
        ListBox2.Items.Add(output)
        RichTextBox1.Text = output
    End Sub
Все работает,но кодировка просто отпад (см.миниатюру) .Пробовал разные кодировки,ничего не помогает.Да и как быть с FileName и Arguments ,если команда "ping"? Похоже придется оставить результат в cmd.
Orlangur, По вашему поиску все примерно как и January29,
Миниатюры
Как программно запустить выполняемую команду в командной строке   Как программно запустить выполняемую команду в командной строке  
1
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 19:22  [ТС]
С "ping" разобрался,надо
VB.NET
1
2
 p.StartInfo.FileName = "ping"
        p.StartInfo.Arguments = " "
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
08.08.2020, 20:43
Лучший ответ Сообщение было отмечено Тим70 как решение

Решение

Тим70,
Цитата Сообщение от Тим70 Посмотреть сообщение
кодировка просто отпад
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Dim p As New Process
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "cmd.exe"
        p.StartInfo.Arguments = "/c ping 8.8.8.8"
        p.StartInfo.CreateNoWindow = True
        p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866)
        p.Start()
        Dim output As String = p.StandardOutput.ReadToEnd()
        p.WaitForExit()
        RichTextBox1.Text = output
2
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 21:01  [ТС]
Orlangur, Спасибо.Вот теперь все нормально.А можно эту 866 кодировку применить к
VB.NET
1
2
3
4
5
6
7
   Function Coderovka(ByVal q As String)
        Dim rez As String
        Dim Enc1 As New System.Text.ASCIIEncoding
        Dim Enc2 As New System.Text.UTF8Encoding()
        rez = Enc1.GetString(Enc2.GetBytes(q))
        Return rez
    End Function
нашел у Памирыча
1
3257 / 3275 / 556
Регистрация: 17.02.2019
Сообщений: 5,184
08.08.2020, 21:29
опоздал наверно
VB.NET
1
2
3
4
5
6
7
8
9
10
11
'netsh wlan show interface
        Dim p As Process = New Process()
        p.StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(866)
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "netsh"
        p.StartInfo.Arguments = "wlan show interface"
        p.Start()
        Dim output As String = p.StandardOutput.ReadToEnd()
        IO.File.WriteAllText(Pu1, output, System.Text.Encoding.GetEncoding(866))
        p.WaitForExit()
Добавлено через 25 минут
Тим70, попробуй так должно выйти в Encoding.Default
VB.NET
1
2
3
4
5
6
7
8
9
10
11
'netsh wlan show interface
        Dim p As Process = New Process()
        p.StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(866)
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "netsh"
        p.StartInfo.Arguments = "wlan show interface"
        p.Start()
        Dim output As String = p.StandardOutput.ReadToEnd()
        IO.File.WriteAllText(Pu1, output, System.Text.Encoding.Default)
        p.WaitForExit()
у меня вышло, пишет по русски
2
3257 / 3275 / 556
Регистрация: 17.02.2019
Сообщений: 5,184
08.08.2020, 21:34
0
Любитель
 Аватар для Тим70
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
08.08.2020, 21:37  [ТС]
January29, Вот так все работает
VB.NET
1
2
3
4
5
6
7
8
9
10
11
 Dim p As Process = New Process()
        p.StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(866)
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.FileName = "netsh"
        p.StartInfo.Arguments = "wlan show interface"
        p.Start()
        Dim output As String = p.StandardOutput.ReadToEnd()
        IO.File.WriteAllText(Pu1, output, System.Text.Encoding.GetEncoding(1251))
        RichTextBox1.Text = output
        p.WaitForExit()
Добавлено через 2 минуты
С Encoding.Default тоже работает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2020, 21:37
Помогаю со студенческими работами здесь

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

Как в командной строке (или .bat файле) прописать команду make ?
Ситуация проста. Имею три файла, два файла с++ с мейном и функцией и один заголовочник с обьявлением в нем функции. Лежат они в папке...

Как запустить в С# rnaapp с параметрами в командной строке?
Help me, please ... Как запустить в С# rnaapp с параметрами в командной строке?

Как запустить файл haskell в командной строке windows 10?
помогите пожалуйста разобраться: на лекции дали такой вариант: ./myfile.hs но windows выдает ошибку видимо у преподавателя другая...

Научите расшифровать команду в командной строке
У меня ноут Asus d540. Я обновляла w10. Потом мне надо было установить прогу для тендеров. Она запросила зайти как админ. Я в инете...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru