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

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

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

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


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

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


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

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

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

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

 


Moderator


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

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


%COMPUTERNAME% - стандартная переменная.
Это сообщение посчитали полезным следующие участники:

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



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

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

MSI MSI вне форума Автор темы

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


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

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


Petya V4sechkin, благодарю с переменной %COMPUTERNAME% результат достигнут.
Сразу проверить как-то не решился - результаты выполнения hostname и set computername несколько разнятся - это и смутило...

А все-таки, можно ли в переменную "заталкивать" результат выполнения команды?

Отправлено: 18:25, 14-02-2009 | #3



Moderator


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

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


Цитата MSI:
А все-таки, можно ли в переменную "заталкивать" результат выполнения команды?
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

For /F "Delims=" %%I In ('Hostname') Do Set V=%%~I
Echo !V!
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:32, 14-02-2009 | #4

MSI MSI вне форума Автор темы

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


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

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


Petya V4sechkin, Благодарю!

Если можно, хочу уточнить в чем разница между Echo !V! и Echo %V% ?

Отправлено: 18:50, 14-02-2009 | #5



Moderator


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

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


MSI, !V! - связывание времени выполнения (включается с помощью EnableDelayedExpansion). Подробнее можно почитать в описании команды Set:
set /?

Вообще в вашем примере работает и %V% (потому что подстановка значения не происходит внутри цикла (For) или условия (If)).

Отправлено: 20:36, 14-02-2009 | #6


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


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

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


Добрый день!
Нашел эту ветку на форуме, т.к. вопрос похожий, но посложнее.
Есть вот такие строки
Код: Выделить весь код
NSLOOKUP %IPcomp% | FIND /i "Имя:" > C:\Script\OffComp\nslookup_.txt
FOR /F "tokens=2 delims=:" %%b IN (C:\Script\OffComp\nslookup_.txt) DO (
ECHO Выключен %IPcomp% %%b >> C:\Script\OffComp\report.txt
)
Хотелось бы в первой строке избежать записи в промежуточный файл nslookup_.txt, а что бы писалось в переменную.
А дальше при помощи FOR я из переменной вытащу что мне необходимо.

Подскажите как это можно реализовать?

Отправлено: 11:54, 12-07-2013 | #7


Ветеран


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

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


kyi13, Вам не нужно, чтобы «писалось в переменную»:
Код: Выделить весь код
for /f "usebackq tokens=2 delims=:" %%i in (
	`nslookup.exe %IPcomp% ^| find.exe /i "Имя:"`
) do (
	>>"C:\Script\OffComp\report.txt" echo Выключен %IPcomp% %%i
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:25, 12-07-2013 | #8


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


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

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


Не буду плодить темы, напишу сюда

есть команда Snmputil.exe get 192.168.15.94 public .1.3.6.1.4.1.318.1.1.1.3.3.3.0 , которая выводит результат в виде двух строк
Variable = .iso.org.dod.internet.private.enterprises.318.1.1.1.3.3.3.0
Value = Gauge32 2174


Необходимо выделить из результата четыре последние цифры , в данном случае число 2174.

Отправлено: 19:01, 01-09-2013 | #9


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims==" %%i in (' Snmputil.exe get 192.168.15.94 public .1.3.6.1.4.1.318.1.1.1.3.3.3.0 ') do set "var=%%i"
set "var=%var:~-4%"
echo %var%
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:46, 01-09-2013 | #10



Компьютерный форум 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




 
Переход