Показать полную графическую версию : Подсчёт строк, содержащих домены из "musor"
Здравствуйте. Прошу помочь. Мне нужно посчитать количество строк, содержащих домены из заданного списка и вывести их кол-во в отдельный файл:
@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, категорически согласен, опять какой-то сферический конь в вакууме.
findstr /l /i /p /g:файл_со_списком_доменов.txt /f:файл_со_списком_строк_в_которых_будет_производиться_поиск.txt | find /c /v "" >> файл_в_который_записывается_результат.txt
Посчитать количество строк в файле:
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%
Буду премного благодарен за помощь
Строки файла в котором нужно искать имеют формат: »
Asdshka, Вы читать умеете? Упакуйте файл в архив и приложите к сообщению. Аналогично с:
@mail.ru @gmail.com »
И не надо изобретать код, Вам его уже дали.
Попробовал данный вариант - он всё время выдаёт 0: »
И как именно Вы пробовали?
В данной базе нужно посчитать количество строк с "мусорными доменами". Мусорные домены должны быть не в отдельном файле, а прописаны в 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
а прописаны в 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.