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

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

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

Новый участник


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

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


Увидел забавную картинку и задался вопросом.
Как в смд искать слова по маске?
Посмотреть картинку

Тут зашифровано слово ХИТРЕЦ.

Соответственно из текстового файла со списком всех русских слов
хочу по маске ?и???ц найти слово хитрец
Я так понял что нативные find и findstr так не умеют.
Какой программой под смд можно найти слова по маске?
Может grep умеет?

Отправлено: 17:26, 24-01-2020

 

Новый участник


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

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


Цитата megaloman:
Попробуйте VBS »
Гуи отображается плохо
Картинко

Ищет хорошо но обнаружилась проблема.
Когда я ему подсунул словарь побольше скрипт без признаков жизни по 10 минут думал
а потом только показывал гуи. В общем если ещё раз возникнет нужда искать по маске
буду использовать ПоШ. Ну или МС адаптирует findstr для utf8.

Отправлено: 09:39, 01-02-2020 | #31



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

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


Ветеран


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

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


Цитата ateka:
Гуи отображается плохо »
Cкрипт WSH должен быть в кодировке ANSI/1251:
Цитата megaloman:
Скрипт сохранить в 1251-кодировке. Словарь - в UTF-8. Прилагаю и то и другое в архиве »
Цитата ateka:
Когда я ему подсунул словарь побольше скрипт без признаков жизни по 10 минут думал »
WSH не работает напрямую с UTF-8, приходится перекодировать. И, как и любые множественные операции над строками, это может занимать заметное время.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:04, 01-02-2020 | #32


Ветеран


Contributor


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

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


Iska, что-то надо в консерватории поменять, и скрипт и словарь я отдавал в архиве в нужной кодировке, а на экране сплошная непристойность. Есть паллиатив - сделать сообщения на английском, но, при русском словаре это не фэншуйно.
ateka, а побольше - это сколько?

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


Отправлено: 12:49, 01-02-2020 | #33


Ветеран


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

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


Цитата megaloman:
я отдавал в архиве в нужной кодировке, »
У меня-то как раз с Вашим архивом из #30 всё нормально:



Цитата megaloman:
ateka, а побольше - это сколько? »
Полгига-гиг?!

Отправлено: 14:01, 01-02-2020 | #34


Новый участник


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

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


Цитата megaloman:
надо в консерватории поменять, и скрипт и словарь я отдавал в архиве в нужной кодировке »
Я ничего не менял.
Цитата megaloman:
побольше - это сколько? »
Очень большой. Там со всеми склонениями ~1.500.000 строк.
Просто в нём встречаются редкие слова. 35мб.

Отправлено: 14:33, 01-02-2020 | #35


Ветеран


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

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


ateka, упакуйте его в архив и выложите на облако.

Отправлено: 15:48, 01-02-2020 | #36


Новый участник


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

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


Цитата Iska:
упакуйте его в архив и выложите на облако »
Я качал отсюда: https://github.com/danakt/russian-words
Конвертировал
Код: Выделить весь код
iconv.exe -f cp1251 -t UTF-8 russian.txt >.\Result\UTF-8.txt
Файл: https://femto.pw/4tzb.rar

Отправлено: 18:54, 01-02-2020 | #37


Ветеран


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

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


ateka, а зачем Вы вообще конвертировали файл, который изначально шёл в ANSI/1251?! Не конвертируйте. И попросите коллегу megaloman убрать конвертацию ANSI→UTF8 из кода.

Ну, и:
Цитата ateka:
Когда я ему подсунул словарь побольше скрипт без признаков жизни по 10 минут думал а потом только показывал гуи. »
— не подтверждаю. Задержка с появлением окна запроса маски, связанная с конвертацией файла словаря обратно в ANSI, у меня занимает примерно полминуты.

Отправлено: 19:16, 01-02-2020 | #38


Новый участник


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

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


Цитата Iska:
И попросите коллегу megaloman убрать конвертацию ANSI→UTF8 из кода. »
Большое спасибо но поверьте не стоит тратить время. ПоверШелл меня вполне устраивает.
Кстати и решение с экселем было отличным. Эксель самый быстрый и удобный.
Цитата Iska:
у меня занимает примерно полминуты »
Тут не знаю. У меня интель, 8гб памяти и быстрый ссд. Антивирус дефолт.
Но ждать приходиться больше десяти минут. Данная технология на моей машинке ленится.

Цитата Iska:
зачем Вы вообще конвертировали файл, который изначально шёл в ANSI/1251?! »
Потому что fndstr на моей машинке ищет только по файлам с кодировкой UTF8.
Как я уже указывал я менял системные настройки на UTF8 суппорт.

Отправлено: 19:55, 01-02-2020 | #39


Ветеран


Contributor


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

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


Вложения
Тип файла: rar я200202.vbs-1251.txt.rar
(3.32 Mb, 1 просмотров)

Цитата Iska:
И попросите коллегу megaloman убрать конвертацию ANSI→UTF8 из кода. »
Не надо просить!!! Уже сделал
Код: Выделить весь код
FileIn = "Z:\Soft_Arc\Словарь\1251.txt"

nword = 3

On Error Resume Next

Set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

With FSO.OpenTextFile(FileIn, 1, False)
    If Err.Number <> 0 Then
        MsgBox "File   " + FileIn + vbCrLf + Err.Description + "(" + CStr(Err.Number) + ")"
        WScript.Quit 2
    End If
    On Error GoTo 0

    Alls = Split(.ReadAll, vbCrLf)
    .Close
End With
On Error GoTo 0

With CreateObject("VBScript.RegExp")
    .IgnoreCase = True
    .Global = True
    Mask = ""
    Do
        Mask = InputBox("Маска содержит русские буквы и точки, например" + vbCrLf + ".и...ц", "Поиск слов по маске", Mask)
        If Mask = "" Then Exit Do
        .Pattern = "^" + Trim(Mask) + "$"
        
        out = ""
        i = 0
        For Each word In Alls
            word = Trim(word)
            If .Test(word) Then
                If i = 0 Then out = out + word Else out = out + vbTab + word
                i = i + 1
                If i = 3 Then
                    i = 0
                    out = out + vbCrLf
                End If
            End If
        Next
        If out = "" Then
            R = MsgBox("По маске    " + """" + Mask + """" + vbCrLf + "Ничего не найдено", vbRetryCancel)
        Else
            R = MsgBox(out, vbRetryCancel, "Маска " + """^" + Trim(Mask) + "$"". Найдено:")
        End If
        If R = 2 Then Exit Do
    Loop

End With
Словарь, скрипт 1251. На моём десятилетнем ноуте загрузка словаря занимает ~30сек, поиск ~15. Но с Вашими проблемами с кодировками не уверен, что у Вас получится - проблемы в консерватории.
Кстати, findstr и словарь в 866 кодировке работает в 3 раза быстрее.
Мой Excel это кол-во строк не съел. Не знаю, может в настройках можно нашаманить.

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

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

Отправлено: 20:00, 01-02-2020 | #40



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Множественная замена слов по маске на случайные. artjuice Скриптовые языки администрирования Windows 2 09-12-2015 19:10
CMD/BAT - Поиск файлов по маске на удаленных машинах по словарю с выгрузкой в *.txt gremlintv2 Скриптовые языки администрирования Windows 3 09-12-2013 04:46
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы rustoss AutoIt 10 29-09-2011 15:27
CMD/BAT - [решено] Поиск файла по маске и по дате Баян Скриптовые языки администрирования Windows 2 14-03-2011 13:32
Поиск слов не по документу, а по документам :) Sev Хочу все знать 4 26-01-2009 12:41




 
Переход