Задать вопрос

Как организовать поиск слов по количеству символов?

Добрый день!
Есть несколько папок, в которых хранятся txt-файлы, в которых указаны списки доменов. Я написал bat-файл, который перебирает все файлы из определенной папки (dest=G:\Domains\BAT\Files\2008\) и ищет в них ключевые слова из txt-файла (G:\Domains\BAT\tags.txt). Найденные домены записываются в новый txt файл, который сохраняется в папке "G:\Domains\BAT\Results\2008"
echo on
setlocal EnableDelayedExpansion
>nul chcp 1251

set "dest=G:\Domains\BAT\Results\2008\"
set "dir=G:\Domains\BAT\Files\2008"

>nul chcp 866

(FOR /F "tokens=*" %%z in ('dir %dir% /b /a-d') do (

FOR /F "usebackq" %%i IN ("G:\Domains\BAT\tags.txt") do ( 
set word=%%i
FOR /F "tokens=*" %%a in ('FINDSTR /R /I /C:%%i %dir%\%%z') do (

 echo %%a >> %dest%%%i.txt"
)
)
))
)

endlocal
Pause

Подскажите пожалуйста, как мне добавить в мой скрипт условие на кол-во символов в домене?
Например, я указываю в файл tags.txt тег "test", а в bat-файле кол-во символов "6". Отбираются только те домены, которые содержат в имени слово test и имеют 6 символов в имени, не считая доменной зоны. Такие домены как test11.com, 2test2.net, testxx.org, xtestx.ru и т.п.

Заранее благодарю!
  • Вопрос задан
  • 485 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@res2001
Developer, ex-admin
Ниже быстрая процедура подсчета длины строки. В параметрах передавать имена переменных, а не значения, т.е. вызывать так:
call:strlen str len
::original: http://forum.script-coding.com/viewtopic.php?pid=71000#p71000
:strlen  StrVar  RtnVar  --  be sure to check if the returned errorlevel is 0
setlocal
set /a "}=0"
if "%~1" neq "" if defined %~1 (
        for %%# in (4096 2048 1024 512 256 128 64 32 16) do (
            if "!%~1:~%%#,1!" neq "" set "%~1=!%~1:~%%#!" & set /a "}+=%%#"
        )
        set "%~1=!%~1!0FEDCBA9876543211" & set /a "}+=0x!%~1:~32,1!!%~1:~16,1!"
    )
)
endlocal & set /a "%~2=%}%"
exit /b

Доменны первого уровня нужно будет отрезать другим способом, перед вызовом процедуры, например так:
for /f "tokens=1 delims=." %%a in ("%doaminname%") do echo.%%a
Ответ написан
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
одна строка в powershell. жирным выделены ваши параметры, которые нужно менять под ваши нужды. ниже - оформлено в виде кода и с сокращениями для уменьшения размера строки
(select-string -Path d:\test\*.txt -Pattern $(Get-Content d:\tags.txt)).line | foreach{if (($_.split('.',2)[0]).length -eq 6) {Out-File d:\result.txt -InputObject $_ -append}}

(sls -Path d:\test\*.txt -Pattern $(cat d:\tags.txt)).line | % {if (($_.split('.',2)[0]).length -eq 6) {Out-File d:\result.txt -InputObject $_ -append}}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы