Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
.NET 4.x

Составная команда CMD

15.11.2019, 00:38. Показов 5508. Ответов 30
Метки cmd (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, каким образом можно реализовать составную (состоящий из нескольких запросов, ключей и прочее) команду для CMD? Т.е., есть несколько вводных для выполнения команды, к примеру:

ping 8.8.8.8 -a -t -r -s -j

где ping 8.8.8.8 - это значение из TextBox, а ключи -a -t -r -s -j - эти значения устанавливаются с помощью нескольких CheckBox, в зависимости от состояния CheckBox.

Начал с малого, я в этом мягко говоря не силён:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Shell("cmd.exe /k" + TextBox1.Text + CheckBox1.Text + CheckBox2.Text)
    End Sub
    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            CheckBox1.Text = " -a"
        Else
            CheckBox1.Text = ""
        End If
    End Sub
    Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
        If CheckBox2.Checked = True Then
            CheckBox2.Text = " -t"
        Else
            CheckBox2.Text = ""
        End If
    End Sub
End Class
когда CheckBox не отмечены, команда получается такой: не удалось обнаружить узел 8.8.8.8-a-t,
когда CheckBox отмечены (оба), вроде как работает
отмечены по одному - не работает.

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2019, 00:38
Ответы с готовыми решениями:

Не работает команда cmd
В очень многих папках создавал файл perehod_v_tekuch_katalog_v_cmd.bat такого содержания: cmd НА всякий случай: три байта 0X63,...

Не работает команда cmd
Process.Start("cmd", "del m:\folder\test.txt"); Почему не работает данная команда? При прописывании в cmd вручную файл удаляется... ...

Команда копирования Xcopy (cmd):
Команда копирования Xcopy (cmd) 1) Скопируйте все файлы и подкаталоги, включая пустые и скрытые, расположенные в месте, путь к которому...

30
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
15.11.2019, 01:27
Лучший ответ Сообщение было отмечено rebell как решение

Решение

rebell, могу предложить такой вариант, для примера.
Предположим, имена checkbox'ов и есть нужные аргументы.
То есть, checkbox1.text = "-t" и тому подобное.
Создаем лист для аргументов
VB.NET
1
 Dim List_of_arguments As New List(Of String)
Сама команда
VB.NET
1
 Dim command As String = "ping 8.8.8.8"
Далее, вешаем обработчик на нажатие всех нужных checkbox'ов
VB.NET
1
2
3
4
5
6
7
8
9
  Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged 'сюда вписать все нужные checkbox'ы
        Dim cb = CType(sender, CheckBox)
        If cb.Checked Then
            List_of_arguments.Add(cb.Text) 'если checkbox отмечен, то его текст добавляется в список
        Else
            List_of_arguments.Remove(cb.Text) 'если нет, то удаляется из списка
        End If
        TextBox2.Text = command & " " & String.Join(" ", List_of_arguments) ' объединяем список аргументов с командой и выводим в textbox2
    End Sub
2
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
17.11.2019, 20:51  [ТС]
Orlangur1991, не хочу показаться назойливым, не могли бы показать уже готовый вариант, рабочий, т.е. что куда относится, пожалуйста?
Сейчас не могу сообразить что к чему, где "кнопка" и как можно это дело масштабировать, так как команда "ping 8.8.8.8" представлены как пример, их (команд) может быть разное количество.

Спасибо.

Добавлено через 5 минут
Orlangur1991, прошу прощения, поспешил с обращением, сейчас разобрался.
Спасибо.

Добавлено через 46 минут
Orlangur1991, подскажите, такой момент, как между TextBox.Text установить пробелы?

если их в кнопке несколько:
PureBasic
1
2
3
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Shell("cmd.exe /k" + TextBox2.Text + TextBox3.Text)
    End Sub
пробел либо в конце либо вначале строки.
Спасибо.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
17.11.2019, 22:00
Лучший ответ Сообщение было отмечено rebell как решение

Решение

rebell, объединяйте строки через &
VB.NET
1
 Shell("cmd.exe /k " & TextBox2.Text & " " & TextBox3.Text)
1
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
20.11.2019, 22:03  [ТС]
Orlangur1991, Добрый вечер.
Прошу прощения, снова хотел бы к Вам обратиться, так как уверен, что Вы сможете разобраться.
Подскажите, пожалуйста, каким образом можно в TextBox (или другой элемент похожего класса) указать путь к файлу через кнопку?
т.е.
1. нужна кнопка, которая указывает путь к файлу и хранит путь в TextBox.
2. так же, нужна кнопка, которая указывает, где необходимо сохранить файл (с указанием расширения типов файла), к примеру, по нажатию кнопки открывается "окно с указанием пути хранения", указываем где будет лежать файл, задаём ему имя и расширение соответственно, и эта информация также хранится в TextBox.

Заранее большое спасибо.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
20.11.2019, 22:22
Лучший ответ Сообщение было отмечено rebell как решение

Решение

rebell,
VB.NET
1
2
3
4
5
6
7
8
9
10
11
 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim SVD As New SaveFileDialog With {
            .AddExtension = True,
            .Filter = "Txt files (*.txt)|*.txt|All files (*.*)|*.*",
            .InitialDirectory = Application.StartupPath,
            .FilterIndex = 0
        }
        If SVD.ShowDialog = DialogResult.OK Then
            TextBox1.Text = SVD.FileName
        End If
    End Sub
1
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
20.11.2019, 22:29  [ТС]
Orlangur1991, отлично, то что нужно!
это подходит только хранения файла? или так же можно использовать как я написал в П.1 (которая указывает путь к файлу и хранит путь в TextBox)?
Спасибо.
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
20.11.2019, 22:29
Может я на что сгожусь?
VB.NET
1
2
3
4
5
6
7
8
9
10
Dim openFileDlg As New OpenFileDialog
openFileDlg.Title = "Открыть файл"
openFileDlg.FileName = ""
openFileDlg.Filter = "Файлы MS Access |*.mdb" 'пример фильтра файлов
openFileDlg.InitialDirectory = путь к директории, с которой начинается обзор 
openFileDlg.Multiselect = False
 
If openFileDlg.ShowDialog = Windows.Forms.DialogResult.OK Then 'Выбираем файл
    TextBox1.Text = openFileDlg.FileName
End If
2
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
20.11.2019, 22:30
rebell, не заметил, что там 2 пункта, прочитал последнее про сохранить
0
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
20.11.2019, 22:34  [ТС]
Uswer, да, большое спасибо, только я указал фильтр файлов - openFileDlg.Filter = "All files |*.*", не знаю корректно ли так делать, но работает и все файлы отображает.

Добавлено через 44 секунды
Orlangur1991, а уже не надо, товарищ Uswer, помог!
ещё раз спасибо за помощь вам всем!
0
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
21.11.2019, 02:37  [ТС]
Orlangur1991, Подскажите, пожалуйста, почему возникает ошибка? (см. вложение)
скопировал код на новый проект... ошибка
Миниатюры
Составная команда CMD  
0
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
21.11.2019, 03:20  [ТС]
Блин, сайт лёг( раньше бы ответил
хммм... проблема оказалась в том, что при создании проекта я указал Платформу NET Framework 3.5, а когда NET Framework 4.5+ то ошибки нет.... интересно из-за чего так.
Спасибо.
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
22.11.2019, 10:30
Цитата Сообщение от rebell Посмотреть сообщение
интересно из-за чего так
rebell, в тексте ошибки всё написано. Добавьте ToArray
VB.NET
1
List_of_arguments.ToArray
1
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
22.11.2019, 23:06  [ТС]
Товарищи, подскажите, пожалуйста, как вывести список файлов директории в Listbox?
перечитал форум, но ни как не могу наткнуться на истину.
Делаю пока так:
VB.NET
1
2
3
4
5
6
7
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FolderBrowserDialog1.ShowDialog()
        TextBox1.Text = FolderBrowserDialog1.SelectedPath
        For Each file As String In My.Computer.FileSystem.GetFiles(TextBox1.Text)
            ListBox1.Items.Add(My.Computer.FileSystem.GetFileInfo(file).Name)
        Next
    End Sub
но как из этого исключить TextBox, т.е. чтобы сразу по нажатию кнопки список файлов отобразился в Listbox.
За ранее спасибо.
Извините за назойливость, я повторюсь, мало знаний мягко сказано, хочу научиться, но нужен волшебный пендаль.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
22.11.2019, 23:32
rebell,
VB.NET
1
2
3
4
5
 If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
            For Each file In IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "*.*", IO.SearchOption.TopDirectoryOnly) 'где *.* - маска искомых файлов, а SearchOption.TopDirectoryOnly - не искать в подкаталогах
                ListBox1.Items.Add(IO.Path.GetFileName(file)) ' добавляем только имя с расширением, без полного пути
            Next
        End If
1
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
23.11.2019, 00:05  [ТС]
Orlangur1991, спасибо.
только почему-то надо 2 раза нажать на кнопку "ОК" чтобы результат отображался.
как обычно, сначала пишу а потом разбираюсь
всё ок!
0
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
24.11.2019, 15:18  [ТС]
Товарищи, добрый день.
Снова прошу помощи, подскажите, пожалуйста, как можно всю информацию из ListBox перевести в строковый вид?
т.е. необходимо, в строку где используется команда cmd:
VB.NET
1
2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Shell("cmd.exe /k" & TextBox1.Text & " " & ListBbox1)
и вот после TextBox1.Text & " " указать всю информацию, которая есть в ListBbox, и таким образом, чтобы каждая строчка была перечислена через пробел.
Думаю, может есть вариант информацию из listbox перетащить в другой TextBox и уже его использовать в команде.
За ранее большое спасибо.
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
24.11.2019, 15:56
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim i As Integer
    Dim AllListBoxText As String = " "
    For i = 0 to ListBox1.Items.Count - 1
        AllListBoxText &= ListBox1.Items(i).ToString & " "
    Next i
 
    Shell("cmd.exe /k" & TextBox1.Text & AllListBoxText)
    ...
End Sub
1
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
24.11.2019, 17:33  [ТС]
Uswer, спасибо, работает.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
24.11.2019, 17:35
rebell, ещё как вариант
VB.NET
1
Shell("cmd.exe /k" & TextBox1.Text & " " & String.Join(" ", ListBox1.Items.OfType(Of String).ToArray))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2019, 17:35
Помогаю со студенческими работами здесь

cmd команда на скан сети
Напомните команду, которая сканирует сеть и выводит АйПи - адреса всех сетевых устройств, которые подключены к сетке. "net view"-...

В консоли cmd не работает команда cd
Привет всем. Столкнулся с такой проблемой, в консоли cmd не работает команда cd. Пишу, например, cd E:\Dropbox, ошибки не выдает....

Не работает команда adb через cmd!
Есть список команд в скрипте которые замораживают приложения на телевизоре, потом размораживают соответственно! Из 52х приложений 46...

Не работает команда через cmd на Delphi
Здравствуйте. Не находит файл и не переименовывает через командную строку через приложение Delphi. Есть форма с кнопкой в ней...

Не работает команда в cmd, проверял на других машинах
команда Mem, не работает на моей машине, запускаю на остальных машинах, там где стоит Win7 - там всё идеально, но у меня, ни как. Гуглил -...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru