Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Подсчёт строк, содержащих домены из "musor" (http://forum.oszone.net/showthread.php?t=332282)

Asdshka 03-01-2018 13:45 2788717

Подсчёт строк, содержащих домены из "musor"
 
Здравствуйте. Прошу помочь. Мне нужно посчитать количество строк, содержащих домены из заданного списка и вывести их кол-во в отдельный файл:
PHP код:

@echo off
 
call 
:domain set musor
 
:start
set base
="C:\Users\User\Desktop\Base.txt"
goto musor
goto start
 
:musor
FINDSTR 
////OFF "%musor%" %base% >> REM Нужно прибавить 1 и в конце записать количество в файл
cls
 
:domain
SET musor
=@mail.ru @gmail.com REM и так далее 


Iska 03-01-2018 14:33 2788723

Цитата:

Цитата Asdshka
посчитать количество строк, »

Где? В файле? Тогда предоставьте образец файла, упакованного в архив.

Цитата:

Цитата Asdshka
содержащих домены из заданного списка »

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

Elven 03-01-2018 14:54 2788729

Iska, категорически согласен, опять какой-то сферический конь в вакууме.
Код:

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

Asdshka 03-01-2018 18:16 2788761

Посчитать количество строк в файле:
PHP код:

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

Которые содержат домены из списка:
PHP код:

SET musor=@mail.ru @gmail.com 

И конечный результат вывести в отдельный файл

Строки файла в котором нужно искать имеют формат:
PHP код:

123@mail.ru:asd123
123
@gmail.ru:asd123
123
@email.ru:asd123 

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

findstr ////g:файл_со_списком_доменов.txt /f:файл_со_списком_строк_в_которых_будет_производиться_поиск.txt find //"" >> файл_в_который_записывается_результат.txt 


Кстати, я немного ошибся:
PHP код:

FINDSTR ////OFF /"%musor%" %base

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

Iska 03-01-2018 18:29 2788765

Цитата:

Цитата Asdshka
Строки файла в котором нужно искать имеют формат: »

Asdshka, Вы читать умеете? Упакуйте файл в архив и приложите к сообщению. Аналогично с:
Цитата:

Цитата Asdshka
@mail.ru @gmail.com »

И не надо изобретать код, Вам его уже дали.

Цитата:

Цитата Asdshka
Попробовал данный вариант - он всё время выдаёт 0: »

И как именно Вы пробовали?

Asdshka 03-01-2018 18:34 2788768

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

http://rgho.st/private/7CKmJw2PJ/0a9...0b3d2e355bc830

Цитата:

Цитата Iska
И как именно Вы пробовали? »

PHP код:

findstr ////d:1.txt /d:2.txt find //"" >> 3.txt 
findstr 
/////d:1.txt /d:2.txt find //"" >> 3.txt 


Iska 03-01-2018 19:48 2788776

Цитата:

Цитата Asdshka
а прописаны в 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 2790335

Не знаю, все ли требования выполнил, но основа на 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

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


Время: 18:46.

Время: 18:46.
© OSzone.net 2001-