![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать BAT для вывода значения в консоль по условию |
|
CMD/BAT - [решено] Создать BAT для вывода значения в консоль по условию
|
Новый участник Сообщения: 3 |
Добрый день.
Помогите пожалуйста создать 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 |
Ветеран Сообщения: 2735
|
Профиль | Отправить 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 |
Ветеран Сообщения: 2735
|
Профиль | Отправить 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 |
|