Войти

Показать полную графическую версию : помощь в написание bat файла - обработка лога


alex_sov
11-08-2015, 11:01
Всем привет.
Не очень силен в написание, поэтому нужна ваша помощь.
Есть лог файл типа:

Querying target system called:

8.8.8.8

TCP port 53 (domain service): LISTENING

Querying target system called:

93.158.134.3

TCP port 53 (domain service): FILTERED

Querying target system called:

93.158.134.3

Необходимо сделать из него примерно следующее:
8.8.8.8 TCP port 53 (domain service): LISTENING
93.158.134.3 TCP port 53 (domain service): FILTERED
93.158.134.3 TCP port 25 (smtp service): LISTENING

Iska
11-08-2015, 11:06
Есть лог файл типа: »
Упакуйте файл в архив, прикрепите последний к сообщению или выложите на RGhost.

Iska
11-08-2015, 11:46
alex_sov, выложенный «log.7z» — пустой.

alex_sov
11-08-2015, 11:51
Iska, прошу прощения. Поправил

Iska
11-08-2015, 13:15
alex_sov, попробуйте так:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=log.txt
set sDestFile=log_обработанный.txt

call :GetTemporaryName

if defined sSourceFile (
if exist "%sSourceFile%" (
type "%sSourceFile%" | >"%TemporaryName%" findstr.exe /i /r /c:"[0-9]\.[0-9]" /c:"TCP port"
for /f "usebackq delims=" %%i in (
`type "%TemporaryName%" ^| find.exe /c /v ""`
) do set /a iCount = %%~i / 2
echo [!iCount!]
<"%TemporaryName%" >"%sDestFile%" (
for /l %%i in (1, 1, !iCount!) do (
set /p sVar1=
set /p sVar2=
echo !sVar1: =! !sVar2!
)
)
del /f /q "%TemporaryName%"
) else (
echo Can't find source file [%sSourceFile%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<Source file^>
exit /b 1
)

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

rem ==========================================================================
rem Функция GetTemporaryName()
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 ==========================================================================

alex_sov
11-08-2015, 13:39
Iska, ты просто царь и бог, спасибо огромное :)

Опиум
13-08-2015, 15:48
а это, вывод команды portqry на этапе создания лога никак не оптимизируется?

Foreigner
13-08-2015, 15:54
Опиум, В качестве предположения, попробуйте с помощью PowerShell:

[string] (portqry | sls '\d+') -split '\s{2}' -replace '^\s' | sc log.txt

Опиум
13-08-2015, 16:27
Foreigner, )




© OSzone.net 2001-2012