Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Ответить
Настройки темы
CMD/BAT - [решено] Как записать в переменную результат выполнения команды?
MSI MSI вне форума

Пользователь


Сообщения: 63
Благодарности: 4

Профиль | Отправить PM | Цитировать


Мне необходимо что-то подобное:

%переменная% := (результат команды hostname), чтобы можно было использовать значение переменной дальше в скрипте...

Сейчас на ум приходит только hostname > file.ext , с последущим вычитыванием имени компьютера...

Отправлено: 18:11, 14-02-2009

 

Аватара для Unter

Пользователь


Сообщения: 106
Благодарности: 14

Профиль | Отправить PM | Цитировать


Спасибо всем кто пытался разобраться в моей "компетентности". Я нашел решение, возможно временное, но рабочее. Оно вытекает из логики запуска данного приложения. Запуск происходит EXE файлом небольшого размера, который делает первичные проверки и настройки и запускает рядом лежащий файл, который на самом деле является основным исполняемым модулем и прекрасно запускается через start. Видимо стартовый экзешник зачем то сканирует состояние USB устройств и при этом либо закрывается(пока не проверял), либо меняет свое состояние и скрипт начинает считать, что программа завершила работу, хотя основной модуль находится в памяти. Эх если бы это разработчикам донести.

Отправлено: 02:16, 26-03-2020 | #51



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Unter:
Спасибо всем кто пытался разобраться в моей "компетентности". »
Дело не в "разбирательствах о компетентности". Просто анализ выданной информации и поиск решения, будет сродни "гаданию на кофейной гуще" и результат, естественно, получится соответствующий... он такой нужен вам?
Как минимум, необходимо увидеть строку:
Цитата Unter:
Запуск идет через батник »
т.е. не предварительные действия, по формированию среды и каталогов, а именно запуск программы, а также, надо бы уточнить, более конкретные действия, которые должны выполняться по завершению программы...
а вообще, в cmd, есть команда start, у которой есть ключ WAIT
Цитата:
WAIT Запуск приложения с ожиданием его завершения.
или же, непосредственный запуск программы, тоже должен происходить с ожиданием завершения, т.е. скрипт, от строки запуска, не будет выполняться пока не завершится та программа.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:09, 26-03-2020 | #52


Аватара для Unter

Пользователь


Сообщения: 106
Благодарности: 14

Профиль | Отправить PM | Цитировать


Идет именно формирование среды - переменная %TEMP% и каталоги в ней ну и неужели вы думаете что я про старт /wait не знаю, хотя в батниках можно и без нее обходиться. Ну а в VBS запуск шел через CreateObject("WScript.Shell").run

Отправлено: 09:37, 26-03-2020 | #53


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Unter, причём тут Ваша компетентность? Речь идёт о воспроизводимости.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:58, 26-03-2020 | #54


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Unter:
ну и неужели вы думаете что я про старт /wait не знаю »
Понимаете, телепатия - моя не самая сильная сторона, а гадания на кофейной гуще очень плохо получаются...
"Секретную" строчку Вы показывать не желаете... соответственно, помочь вам, пока нечем. Ну, кроме как поговорить на общие темы... но это уже во флейм.

-------
scio me nihil scire. Ѫ


Отправлено: 11:58, 26-03-2020 | #55


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте.
Предстоит на большом количестве ПК с winXP/7 удаленно поменять в параметрах соединения шлюз и днс.
Решение вижу следующим:
-получить имя соединения
команда
Код: Выделить весь код
wmic path Win32_NetworkAdapter where NetConnectionStatus="2" get NetConnectionID | find "одключ"
выдает то что нужно

-используя полученное имя соединения, при помощи команды netsh внести необходимые изменения

Но по какой-то причине < wmic path Win32_NetworkAdapter where NetConnectionStatus="2" get NetConnectionID | find "одключ" > в bat-нике работает некорректно:
Код: Выделить весь код
setlocal ENABLEDELAYEDEXPANSION
FOR /F "usebackq delims=" %%a IN ('wmic path Win32_NetworkAdapter where NetConnectionStatus="2" get NetConnectionID ^| find "одключ"') DO (set result=%%a)
echo %result%

Подскажите, как поправить чтобы корректно работал.

Отправлено: 11:12, 27-03-2020 | #56


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Wolf_46:
Но по какой-то причине < wmic path Win32_NetworkAdapter where NetConnectionStatus="2" get NetConnectionID | find "одключ" > в bat-нике работает некорректно: »
Например, по причине не той кодировки пакетного файла. У Вашего пакетного файла она какая?

И при использовании квалификатора «usebackq» используйте такие: `…` кавычки для команды, а не такие: '…'.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:22, 27-03-2020 | #57


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Кодировка файла - 866

кавычки поправил, результат:
Код: Выделить весь код
c:\Users\user\Desktop>5.bat

c:\Users\user\Desktop>setlocal ENABLEDELAYEDEXPANSION

c:\Users\user\Desktop>FOR /F "usebackq delims=" %a IN (`wmic path Win32_NetworkA
dapter where NetConnectionStatus "2" get NetConnectionID | find "одключ"`) DO (s
et result=%a )
Invalid Verb.

c:\Users\user\Desktop>echo
Режим вывода команд на экран (ECHO) включен.

Отправлено: 13:34, 27-03-2020 | #58


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Wolf_46, ещё раз покажите Ваш код (нынешний, исправленный).

Отправлено: 16:56, 27-03-2020 | #59


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
setlocal ENABLEDELAYEDEXPANSION
FOR /F "usebackq delims=" %%a IN (`wmic path Win32_NetworkAdapter where NetConnectionStatus="2" get NetConnectionID ^| find "одключ"`) DO (set result=%%a)
echo %result%

Отправлено: 22:48, 27-03-2020 | #60



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Записать имя папки в которой лежит батник в переменную а потом эту же папку переим. bobr95 Скриптовые языки администрирования Windows 8 10-04-2012 18:42
CMD/BAT - [решено] Как определить IP и записать его в переменную? (OS: Windows Vista) Voshal Скриптовые языки администрирования Windows 7 17-05-2010 11:43
CMD/BAT - [решено] Строка результат выполнения filever.exe передать в переменную dARKest Скриптовые языки администрирования Windows 3 07-09-2009 22:50
[решено] Объединить результат mysql_fetch_array() в одну переменную D_Master Вебмастеру 9 10-07-2009 17:23
bash: Как выполнить многострочный результат другой команды shivtorov Общий по Linux 12 04-10-2005 10:20




 
Переход