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

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

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

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


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

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


Изменения
Автор: moh3
Дата: 01-05-2022
Описание: Добавить данные
Добрый день.

Помогите пожалуйста создать BAT-скрипт по условию.

Есть файл со значениями
Скрытый текст


[\SPIDER-03_Canon LBP6020]
names_comp=\SPIDER-03
name_print=Canon LBP6020
data_update=30.04.2022
all_caunt=20
all_caunt_old=20
caunt_other_cartridg=19
cartridg_caunt=0
last_load_print=0
[\SPIDER-02_HP LaserJet M14-M17 PCLmS]
names_comp=\SPIDER-02
name_print=HP LaserJet M14-M17 PCLmS
data_update=30.04.2022
all_caunt=2
all_caunt_old=2
caunt_other_cartridg=0
cartridg_caunt=0
last_load_print=0



Условие:
Если "names_comp=\SPIDER-03" и "name_print=Canon LBP6020" то вывести в консоль число из "caunt_other_cartridg", которое в данный момент равно 19.

А если поменять условие на:
"names_comp=\SPIDER-02" и "name_print=HP LaserJet M14-M17 PCLmS", то вывести в консоль число из "caunt_other_cartridg", которое в данный момент равно 0

Отправлено: 14:03, 01-05-2022

 

Ветеран


Contributor


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

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


Если выдать принтер по задаваемому условию, то:
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\printer.txt"

	Set "names_comp=\SPIDER-03"
	Set "name_print=Canon LBP6020"

	Set /A N=100
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul FindStr /I /C:"names_comp" /C:"name_print" /C:"caunt_other_cartridg" "%FileIn%"`) DO (
		If /I "%%i"=="names_comp" (Set /A N+=1 &Set "Out=")
		Call Set "Out=%%Out%%%%j "
		Call Set "@@%%N%%=%%Out%%"
	)
	FOR /F "usebackq tokens=2 delims==" %%i IN (`2^>nul Set "@@" ^|FindStr /I /C:"%names_comp% %name_print%"`) DO Echo %%i
Pause
Exit /B 0
Если отобразить все принтеры, то:
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\printer.txt"

	Set /A N=100
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul FindStr /I /C:"names_comp" /C:"name_print" /C:"caunt_other_cartridg" "%FileIn%"`) DO (
		If /I "%%i"=="names_comp" (Set /A N+=1 &Set "Out=")
		Call Set "Out=%%Out%%%%j "
		Call Set "@@%%N%%=%%Out%%"
	)
	FOR /F "usebackq tokens=2 delims==" %%i IN (`2^>nul Set "@@"`) DO Echo %%i
Pause
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 02-05-2022 в 07:43.

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

Отправлено: 07:30, 02-05-2022 | #2



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

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


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


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

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


Спасибо огромное!
Работает безупречно!

В принципе мне только необходимо вывод числа из переменной "caunt_other_cartridg" без вывода названий принтеров.
Сделал по Вашему коду так:
Скрытый текст
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=FileIn=Z:\Box_In\printer.txt"

	Set "names_comp=\SPIDER-02"
	Set "name_print=HP LaserJet M14-M17 PCLmS"

	Set /A N=100
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul FindStr /I /C:"names_comp" /C:"name_print" /C:"caunt_other_cartridg" "%FileIn%"`) DO (
		If /I "%%i"=="names_comp" (Set /A N+=1 &Set "Out=")
		Call Set "Out=%%Out%%%%j "
		Call Set "@@%%N%%=%%Out%%"
	)
	FOR /F "usebackq tokens=2 delims==" %%i IN (`2^>nul Set "@@" ^|FindStr /I /C:"%names_comp% %name_print%"`) DO set str=%%i
	set d=%str:~37,40%
	Echo %d%
Pause
Exit /B 0


Нормально или лучше как-то по другому организовать вывод?

Отправлено: 15:49, 02-05-2022 | #3


Ветеран


Contributor


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

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


moh3, Это плохая идея отрезать кусок строки - в зависимости от исходных данных её длина разная.
Код: Выделить весь код
@Echo Off
cls
	Set "FileIn=Z:\Box_In\printer.txt"

	Set "names_comp=\SPIDER-03"
	Set "name_print=Canon LBP6020"

rem	Set "names_comp=\SPIDER-02"
rem	Set "name_print=HP LaserJet M14-M17 PCLmS"

	Set /A N=100
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul FindStr /I /C:"names_comp" /C:"name_print" /C:"caunt_other_cartridg" "%FileIn%"`) DO (
		If /I "%%i"=="names_comp" (Set /A N+=1 &Set "Out=")
		Call Set "Out=%%Out%%%%j="
		Call Set "@@%%N%%=%%Out%%"
	)
	FOR /F "usebackq tokens=4 delims==" %%i IN (`2^>nul Set "@@" ^|FindStr /I /C:"%names_comp%=%name_print%="`) DO Set "caunt_other_cartridg=%%i"
	Echo %caunt_other_cartridg%
Pause
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 16:12, 02-05-2022 | #4


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


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

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


Спасибо огромное, все работает отлично!

Отправлено: 11:51, 12-05-2022 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD/BAT Значение по условию Don_abbadon Скриптовые языки администрирования Windows 7 29-11-2020 14:55
CMD/BAT - bat смена часового пояса по условию sdaa113 Скриптовые языки администрирования Windows 11 21-07-2018 19:25
CMD/BAT - [решено] Создать несколько файлов из одного по условию Rey71 Скриптовые языки администрирования Windows 9 28-04-2018 08:13
Win32 API - Как создать специальную программу для вывода информации? tumanovalex Программирование и базы данных 5 02-06-2015 16:33
CMD/BAT - bat'ник для вывода информации ключа активации Win 7 Tota Скриптовые языки администрирования Windows 2 03-04-2013 16:46




 
Переход