Войти

Показать полную графическую версию : Подсчёт строк, содержащих домены из "musor"


Asdshka
03-01-2018, 13:45
Здравствуйте. Прошу помочь. Мне нужно посчитать количество строк, содержащих домены из заданного списка и вывести их кол-во в отдельный файл:
@echo off

call :domain set musor

:start
set base="C:\Users\User\Desktop\Base.txt"
goto musor
goto start

:musor
FINDSTR /L /I /P /OFF "%musor%" %base% >> REM Нужно прибавить 1 и в конце записать количество в файл
cls

:domain
SET musor=@mail.ru @gmail.com REM и так далее

Iska
03-01-2018, 14:33
посчитать количество строк, »
Где? В файле? Тогда предоставьте образец файла, упакованного в архив.

содержащих домены из заданного списка »
Где будет список? Если в файле — требование то же, что и выше. Если нет — опять же предоставьте образец списка текстом.

Elven
03-01-2018, 14:54
Iska, категорически согласен, опять какой-то сферический конь в вакууме.
findstr /l /i /p /g:файл_со_списком_доменов.txt /f:файл_со_списком_строк_в_которых_будет_производиться_поиск.txt | find /c /v "" >> файл_в_который_записывается_результат.txt

Asdshka
03-01-2018, 18:16
Посчитать количество строк в файле:
set base="C:\Users\User\Desktop\Base.txt"
Которые содержат домены из списка:
SET musor=@mail.ru @gmail.com
И конечный результат вывести в отдельный файл

Строки файла в котором нужно искать имеют формат:
123@mail.ru:asd123
123@gmail.ru:asd123
123@email.ru:asd123

Попробовал данный вариант - он всё время выдаёт 0:
findstr /l /i /p /g:файл_со_списком_доменов.txt /f:файл_со_списком_строк_в_которых_будет_производиться_поиск.txt | find /c /v "" >> файл_в_который_записывается_результат.txt


Кстати, я немного ошибся:
FINDSTR /L /I /P /OFF /V "%musor%" %base%

Буду премного благодарен за помощь

Iska
03-01-2018, 18:29
Строки файла в котором нужно искать имеют формат: »
Asdshka, Вы читать умеете? Упакуйте файл в архив и приложите к сообщению. Аналогично с:
@mail.ru @gmail.com »
И не надо изобретать код, Вам его уже дали.

Попробовал данный вариант - он всё время выдаёт 0: »
И как именно Вы пробовали?

Asdshka
03-01-2018, 18:34
В данной базе нужно посчитать количество строк с "мусорными доменами". Мусорные домены должны быть не в отдельном файле, а прописаны в BAT-файле

http://rgho.st/private/7CKmJw2PJ/0a9775916776c537c60b3d2e355bc830

И как именно Вы пробовали? »
findstr /l /i /p /d:\1.txt /d:\2.txt | find /c /v "" >> 3.txt
findstr /l /i /p /v /d:\1.txt /d:\2.txt | find /c /v "" >> 3.txt

Iska
03-01-2018, 19:48
а прописаны в BAT-файле »
Ну, если Вы настаиваете…
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1
set sExcludeList=@mail.ru @gmail.com @tut.by

call :GetTemporaryName

if defined sSourceFile (
if exist "%sSourceFile%" (
>"%TemporaryName%" (for %%i in (%sExcludeList%) do echo %%i)
findstr.exe /l /i /g:"%TemporaryName%" "%sSourceFile%" | >"Result.txt" find.exe /c /v ""
del /f /q "%TemporaryName%"
) else (
echo Can't find source file [%sSourceFile%].
exit /b 2
)
) else (
echo Usage: %~0 ^<Source file^>
exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
setlocal enableextensions enabledelayedexpansion

:NextName
set sTempName=%temp%\temp%random%.tmp

if exist "%sTempName%" goto :NextName

set sProcName=%~0

endlocal & set %sProcName:~4%=%sTempName%
exit /b 0
rem ==========================================================================
Путь к исходному файлу задаётся параметром пакетного файла (также можно перетащить исходный файл на пакетный файл в Проводнике).

DJ Mogarych
10-01-2018, 16:31
Не знаю, все ли требования выполнил, но основа на Powershell выглядит так:


$musor=@(
"@mail.ru"
"@gmail.com"
)
$s=Get-Content .\Base.txt | Select-String -Pattern $musor -SimpleMatch
$s | Select LineNumber,Line,Pattern | ft -AutoSize -Wrap
$s.Count


Можно чуть допилить.




© OSzone.net 2001-2012