|
Компьютерный форум 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 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Iska, да это недопустимо
|
Отправлено: 14:00, 18-09-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2712
|
Профиль | Отправить PM | Цитировать surgutfred, Вот костыль имеющегося решения: вместо старого For написать
Цитата surgutfred:
Set "Fstr="ОВК-Ф" "ОВМ-Ф" "Тра ля ля" "Ку-ку" "и т д"" только затем напишите сколько нужно процедур, сейчас это :Fstr1, :Fstr2. Если девять признаков, то :Fstr3 ....:Fstr9. Если ни один не найден, :FstrNo Номер процедурочки соответствует позиции признака в перечислении. |
|
------- Последний раз редактировалось megaloman, 18-09-2018 в 14:49. Отправлено: 14:44, 18-09-2018 | #12 |
Ветеран Сообщения: 2712
|
Профиль | Отправить PM | Цитировать surgutfred, Немного изменил постановку
Скрипт выберет все файлы с признаком: "ОВК-Ф" и сделает для них процедуру :Fstr1 "ОВМ-Ф" и сделает для них процедуру :Fstr2 Если таких признаков куча, соответственно будут делаться :Fstr(с другими номерами) Если в файлах ни одного признака не найдено, сделается процедура :FstrNo То есть можно иметь и смесь файлов с разными признаками, и корректно их обработать Вот код
@Echo Off cls >nul chcp 1251 Set "BoxIn=Z:\Box_In\File" Set "Ext=.din" Set "Fstr="ОВК-Ф" "ОВМ-Ф"" Set /A i=0 Set /A Log=0 If Not Exist "%BoxIn%\*%Ext%" Echo "%BoxIn%\*%Ext%" not found &Exit /B 1 For %%p In (%Fstr%) Do ( Call Set /A i+=1 FOR /F "usebackq delims=" %%f IN (`FIND /C /I %%p "%BoxIn%\*%Ext%"`) Do Call :Finder "%%f" "%Ext%" %%p ) If %Log%==0 Call :FstrNo %Fstr% pause GoTo :Eof :Finder Set "N=%~1" Call Set "N=%%N:*%~2: =%%" Set "File=%~1" Set "File=%File:*-- =%" Call Set "File=%%File:: %N%=%%" If Not "%N%"=="0" Set /A Log=1 &Call :Fstr%i% "%File%" %3 GoTo :Eof :Fstr1 Echo "ОВК-Ф" %2 %1 GoTo :Eof :Fstr2 Echo "ОВМ-Ф" %2 %1 GoTo :Eof :FstrNo Echo no files with %* GoTo :Eof |
------- Последний раз редактировалось megaloman, 18-09-2018 в 17:21. Отправлено: 17:02, 18-09-2018 | #13 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Что то вчера вроде писал сообщение, похоже не отправил...
megaloman, спасибо за этот вариант, вполне возможно будет востребован в будущем. Про 9 признаков я имел ввиду другое, типа временного костыля. Данный обработчик в зависимости сначала от вида файла по Вашему скрипту, а потом еще и по моей добавке по названию файла копирует определенный набор папок (в зависимости от набора din 10гб - 100гб) Поэтому мне и неинтересно что он обрабатывает по кругу каждый файл и копирует одно и тоже несколько раз. Мне нужно что бы он посмотрел вид файла в первом файле из набора и просто пошел по метке не трогая остальные файлы. Вариаций файлов din по названию файла около 100 примерно, в каждом наборе дин есть одна, скажем так основная, их штук 35. Я сумел сузить до 9 масок, чтобы вычленить из набора эту основную систему и смотреть признак в ней (ОВК-Ф или ОВМ-Ф). Но это примерно 40 строчек кода с выборкой основной системы. Поэтому и спрашивал может есть вариант короче обработать только один любой файл из набора |
Отправлено: 06:39, 21-09-2018 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 06:45, 21-09-2018 | #15 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать megaloman, Iska, Спасибо за помощь, пока вроде получил то что нужно. Время покажет все ли я предусмотрел в алгоритме.
|
Отправлено: 10:47, 21-09-2018 | #16 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|