Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 8
1

Передача параметров в командную строку

29.11.2019, 09:20. Показов 1689. Ответов 7

Author24 — интернет-сервис помощи студентам
Добрый день.

Создал батник, который ищет на серверах активную указанную учетку RDP, и если находит, то делает logoff. Батник отрабатывает нормально. Неудобство в том, что, чтобы указать учетку нужно вручную редактировать батник. Пришла идея переработать в мини-програмку с 2 объектами: текстовым окном ввода учетки и кнопкой выполнения. Параметр из окна в батник передается нормально, но сам батник как-то неверно обрабатывает.

Код кнопки
Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
begin
FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
with StartupInfo  do begin
      cb := SizeOf( TStartupInfo);
      lpReserved:=nil;
      lpTitle:=nil;
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := SW_SHOW;
      cbReserved2:=0;
      lpReserved2:= nil;
   end;
 
okno :=Edit1.Text;
 
{  относительно рабочий вариант. Батники из под него не ок
ShellExecute(0, nil,PChar('c:\1\send.bat'),pchar(okno),nil,1);
}
 
{тоже рабочий вариант. Батники из под него не ок}
 
CreateProcess(nil,pchar('c:\1\send.bat '+okno),nil,nil,false, NORMAL_PRIORITY_CLASS,nil,nil,StartUpInfo,ProcessInfo);
 
 
{
ShellExecute(0,'open','cmd.exe','/k send.bat pchar(okno)' ,'c:\1\',SW_SHOW);
}
 
end;
 
end.

Вывод бат файла. Команда которая не может отработать query user
Кликните здесь для просмотра всего текста

C:\Program Files (x86)\Borland\Delphi7\Projects\TEst1>call C:\1\Parsing.bat Edit1

C:\Program Files (x86)\Borland\Delphi7\Projects\TEst1>echo off
"query" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"query" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"query" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Для продолжения нажмите любую клавишу . . .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2019, 09:20
Ответы с готовыми решениями:

Передача сообщений в командную строку
Здравствуйте господа. Никак не могу понять каким образом передать в командную стоку сообщение о...

Передача параметра через командную строку
В общем такая проблема делаю ScrSaver Нужно помочь с настройками Через командную строку все...

Считывание параметров, переданных через командную строку
Всем привет! Есть у кого-нибудь пример считывания нескольких параметров, переданных через...

Передача строки в командную строку
Здравствуйте. Прошу подсказать,как передать в cmd из .py файла команду: cd C:\sdfs\sdfs...

7
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,133
Записей в блоге: 3
29.11.2019, 12:11 2
а при чем тут делфи?
0
32 / 26 / 7
Регистрация: 18.10.2019
Сообщений: 187
29.11.2019, 12:30 3
А с каких это пор батник стал понимать query? Вы что там на самом деле пишете?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,133
Записей в блоге: 3
29.11.2019, 14:39 4
Цитата Сообщение от Мудрый Ижик Посмотреть сообщение
А с каких это пор батник стал понимать query?
это не те query

набери в консоли
Код
query user
0
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
29.11.2019, 15:55 5
Что именно вы хотите получить?
  • Вы можете делать "что-то нужное" через WinAPI.
  • Вы можете делать "что-то нужное" через процесс CMD.
  • Вы можете делать "что-то нужное" через BAT-скрипт.
А смешивать не надо.

Добавлено через 25 секунд
send.bat это не "программа", это по сути "документ". Документ нельзя CreateProcess().
0
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 8
02.12.2019, 05:34  [ТС] 6
Что именно вы хотите получить?
На работе иногда возникает потребность сделать логофф для юзера с сервера RDP. Серверов несколько. Инструмента смотреть на какой из ферм RDP юзер сидит нет, только вручную. Создал батник №2, который ищет нужную учетку на серверах и, если находит, то делает логофф. Чтобы передать в батник №2 нужную учетку в батник №1 нужно вручную прописать учетку и вызвать батник №2. Я хочу с помощью делфи упростить этот процесс. Чтобы в одном окне программы писать нужную учетку и вызывать батник №2, без необходимости вручную редактировать батник №1.

Код батник №1
call Parsing.bat *ivanov_ia*

Код батник №2
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo off
 
setlocal enabledelayedexpansion
 
query user /server:vl20-rdsh01 >имя_сервера.txt
echo Spisok 1 sdelal
 
for /f "tokens=1,2" %%i in (имя_сервера.txt) DO if /I [%%i]==[%1] echo ===================NASHOL na имя_сервера
echo gotovo имя_сервера
 
for /f "tokens=1,2" %%i in (имя_сервера.txt) DO if /I [%%i]==[%1] logoff.exe %%j /server:имя_сервера
 
echo finished
pause
Серверов много, код обрезал.

Вы можете делать "что-то нужное" через WinAPI.
Вы можете делать "что-то нужное" через процесс CMD.
Вы можете делать "что-то нужное" через BAT-скрипт.
Про WinAPI неизвестно, погуглю. Bat на данный момент реализован, но недостаточно автоматизирован)

send.bat это не "программа", это по сути "документ". Документ нельзя CreateProcess().
Помучаю еще его, если не получится, то буду другие варианты искать. Если знаете как можно по другому реализовать, то прошу тыкнуть, а я уже пороюсь)
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,133
Записей в блоге: 3
02.12.2019, 08:19 7
Цитата Сообщение от Inkvee Посмотреть сообщение
Если знаете как можно по другому реализовать
может имя прописывать в текст?
потом выгружать и запускать
0
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
02.12.2019, 18:42 8
Проводник Windows 10 делает запуск батников так:
Создаётся процесс C:\Windows\System32\cmd.exe с командной строкой C:\Windows\system32\cmd.exe /c ""C:\...\... .bat" "

Посмотрите пока неоформленную информацию:
https://www.cyberforum.ru/post10316194.html
https://www.cyberforum.ru/post10316633.html
0
02.12.2019, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2019, 18:42
Помогаю со студенческими работами здесь

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

Передача пути через командную строку
Задача - обработка входных параметров командной строки. Мне необходимо в программу передать...

Передача символов через командную строку
Доброго времени суток! Прошу помочь мне с решением данной задачи: Через командную строку...

Передача данных из поля в командную строку
Доброго времени суток! Заранее извиняюсь, если может вопрос где-то и звучал, прошу Вашей помощи...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru