|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать BAT для вывода значения в консоль по условию |
|
CMD/BAT - [решено] Создать BAT для вывода значения в консоль по условию
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать
Добрый день.
Помогите пожалуйста создать 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 |
Ветеран Сообщения: 2726
|
Профиль | Отправить 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
|
Профиль | Отправить 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 |
Ветеран Сообщения: 2726
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Спасибо огромное, все работает отлично!
|
|
Отправлено: 11:51, 12-05-2022 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|