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

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

Ответить
Настройки темы
CMD/BAT - [решено] Findstr и кириллица

Пользователь


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

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


Вложения
Тип файла: zip File.zip
(1.5 Kb, 6 просмотров)
Судя по поиску не я первый с этим мучаюсь, но решение которое бы у меня сработало я не нашел.
Во вложении 2 файла
Внутри файлов меня интересуют два признака, в одном это слово ОВМ-Ф, в другом ОВК-Ф
Мне нужно написать батник который искал бы эти слова в файлах *.din и если нашел ОВМ-Ф, то идет на метку 1, если нашел ОВК-Ф, то на метку 2, если не нашел оба то на метку 3
Что то типа такого:

Код: Выделить весь код
set "s=ОВМ-Ф"
type "*.din"|>nul findstr /c:"\<%s%\>" && call :p1 || call :p2
Если заменить искомую фразу на английский вариант, то все норм, а русский не ищет. Исходные файлы *.din менять нельзя

Пробовал указывать кодировку в начале батника chcp 1251 - не помогло
Батник в кодировке 1251 как и файлы din

Отправлено: 18:50, 17-09-2018

 

Аватара для Elven

Ветеран


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

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


сохранить батник в 866 кодировке (например через NPP) и должно поехать.

Отправлено: 19:12, 17-09-2018 | #2



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

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


Пользователь


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

Профиль | Отправить 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



Moderator


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

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


surgutfred, вместо findstr можно использовать find.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:29, 17-09-2018 | #4


Ветеран


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

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


Цитата surgutfred:
слова в файлах *.din »
а какая там кодировка, если utf-8, то возможно в этом и проблема и findstr лучше по "родному" записывать:
Код: Выделить весь код
findstr /rc:"\<%s%\>" "*.din"
потому как с type тоже не все в порядке иногда как раз на кодировках.

Отправлено: 20:27, 17-09-2018 | #5


Ветеран


Contributor


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

Профиль | Отправить 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
Батник сохранить в кодировке 1251

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

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

Отправлено: 21:27, 17-09-2018 | #6


Пользователь


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

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


megaloman, огромное спасибо, вроде то что нужно, но сегодня башка уже не варит, завтра посмотрю внимательнее

Отправлено: 21:31, 17-09-2018 | #7


Пользователь


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

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


megaloman, еще уточняющий вопрос.
если файлов *.din несколько (но они всегда одного типа, смешанных не может быть) как ограничить проверку по одному любому файлу? Иначе он после перехода по метке повторяет одни и те же действия для каждого файла *.din
А то как то не хочется перечислять пару десятков вариантов

Отправлено: 09:29, 18-09-2018 | #8


Пользователь


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

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


Может быть несколько din, но при каждом запуске все din одного типа либо все ОВК-Ф либо все ОВМ-Ф либо третий вариант
В итоге например три ОВК-Ф bat переходит по метке ОВК-Ф и выполняет все действия для каждого файла.
В следующий запуск будут например четыре ОВМ-Ф и такая же картина.

Мне в принципе достаточно по одному файлу узнать какого типа данный набор ОВК-Ф, ОВМ-Ф или третий вариант
Мне не нужно что бы цикл обрабатывал каждый файл. Извиняюсь если сразу непонятно объяснил, просто не подумал что он по кругу будет гонять

Пока что я указал 9 признаков, по которым можно вычленить один из файлов по маске, но это в целом 43 лишних строки кода

Если есть вариант что из имеющихся *.din взять любой один и из него вытащить признак было бы круто.

Отправлено: 12:06, 18-09-2018 | #9


Ветеран


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

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


surgutfred, Вы категорически уверены, что будет:
Цитата surgutfred:
все din одного типа либо все ОВК-Ф либо все ОВМ-Ф либо третий вариант
Цитата surgutfred:
не нашел оба »
»
и никогда — варианта четыре: ОВК-Ф + ОВМ-Ф и пять: ОВК-Ф + ОВМ-Ф + ни один из них?

Отправлено: 13:43, 18-09-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход