|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Findstr и кириллица |
|
|
CMD/BAT - [решено] Findstr и кириллица
|
Пользователь Сообщения: 70 |
Профиль | Отправить PM | Цитировать
Судя по поиску не я первый с этим мучаюсь, но решение которое бы у меня сработало я не нашел.
Во вложении 2 файла Внутри файлов меня интересуют два признака, в одном это слово ОВМ-Ф, в другом ОВК-Ф Мне нужно написать батник который искал бы эти слова в файлах *.din и если нашел ОВМ-Ф, то идет на метку 1, если нашел ОВК-Ф, то на метку 2, если не нашел оба то на метку 3 Что то типа такого: Если заменить искомую фразу на английский вариант, то все норм, а русский не ищет. Исходные файлы *.din менять нельзя Пробовал указывать кодировку в начале батника chcp 1251 - не помогло Батник в кодировке 1251 как и файлы din |
|
Отправлено: 18:50, 17-09-2018 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать сохранить батник в 866 кодировке (например через NPP) и должно поехать.
|
Отправлено: 19:12, 17-09-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Elven, попробовал все равно выдает Строка "ОВМ-Ф" - не обнаружена
Весь батник: @echo off set "s=ОВМ-Ф" type "s*.din"|>nul findstr /c:"\<%s%\>" && call :p1 || call :p2 echo После поиска строки, в основной программе, echo тоже можно еще продолжать работу. pause& exit :p1 echo Строка "%s%" существует echo Можно что-то делать exit /b :p2 echo Строка "%s%" - не обнаружена echo Можно что-то делать... или не делать exit /b |
Отправлено: 19:17, 17-09-2018 | #3 |
Сообщения: 53170
|
Профиль | Отправить PM | Цитировать surgutfred, вместо findstr можно использовать find.
|
Отправлено: 19:29, 17-09-2018 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата surgutfred:
потому как с type тоже не все в порядке иногда как раз на кодировках. |
||
Отправлено: 20:27, 17-09-2018 | #5 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать surgutfred,
@Echo Off cls >nul chcp 1251 Set "BoxIn=Z:\Box_In\File" Set "Mask=*.din" Set "Fstr="ОВК-Ф" "ОВМ-Ф"" FOR %%f IN ("%BoxIn%\%Mask%") DO Call :Finder "%%f" %Fstr% pause GoTo :Eof :Finder Set /A i=0 :Begin Set /A i+=1 If "%~2"=="" (Call :FstrNo %1 %2 &Exit /B 0) FIND /C /I %2 %1 >nul &&(Call :Fstr%i% %1 %2 &Exit /B 0) Shift /2 GoTo :Begin GoTo :Eof :Fstr1 Echo %1 %2 GoTo :Eof :Fstr2 Echo %1 %2 GoTo :Eof :FstrNo Echo %1 No GoTo :Eof |
------- Отправлено: 21:27, 17-09-2018 | #6 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать megaloman, огромное спасибо, вроде то что нужно, но сегодня башка уже не варит, завтра посмотрю внимательнее
|
Отправлено: 21:31, 17-09-2018 | #7 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать megaloman, еще уточняющий вопрос.
если файлов *.din несколько (но они всегда одного типа, смешанных не может быть) как ограничить проверку по одному любому файлу? Иначе он после перехода по метке повторяет одни и те же действия для каждого файла *.din А то как то не хочется перечислять пару десятков вариантов |
Отправлено: 09:29, 18-09-2018 | #8 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Может быть несколько din, но при каждом запуске все din одного типа либо все ОВК-Ф либо все ОВМ-Ф либо третий вариант
В итоге например три ОВК-Ф bat переходит по метке ОВК-Ф и выполняет все действия для каждого файла. В следующий запуск будут например четыре ОВМ-Ф и такая же картина. Мне в принципе достаточно по одному файлу узнать какого типа данный набор ОВК-Ф, ОВМ-Ф или третий вариант Мне не нужно что бы цикл обрабатывал каждый файл. Извиняюсь если сразу непонятно объяснил, просто не подумал что он по кругу будет гонять Пока что я указал 9 признаков, по которым можно вычленить один из файлов по маске, но это в целом 43 лишних строки кода Если есть вариант что из имеющихся *.din взять любой один и из него вытащить признак было бы круто. |
Отправлено: 12:06, 18-09-2018 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:43, 18-09-2018 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - findstr точный поиск | vngreez@vk | Скриптовые языки администрирования Windows | 34 | 23-06-2017 22:50 | |
CMD/BAT - certutil и findstr - иероглифы | Sarus | Скриптовые языки администрирования Windows | 0 | 06-05-2015 09:49 | |
CMD/BAT - [решено] findstr помощь | firstarey | Скриптовые языки администрирования Windows | 26 | 12-10-2013 12:17 | |
CMD/BAT - [решено] Помогите с findstr | dima05605 | Скриптовые языки администрирования Windows | 9 | 09-12-2012 19:50 | |
CMD/BAT - [решено] Помогите с findstr | dima05605 | Скриптовые языки администрирования Windows | 15 | 28-10-2012 19:49 |
|