Показать полную графическую версию : помощь в написание 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
Есть лог файл типа: »
Упакуйте файл в архив, прикрепите последний к сообщению или выложите на RGhost.
alex_sov, выложенный «log.7z» — пустой.
alex_sov
11-08-2015, 11:51
Iska, прошу прощения. Поправил
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, ты просто царь и бог, спасибо огромное :)
а это, вывод команды portqry на этапе создания лога никак не оптимизируется?
Foreigner
13-08-2015, 15:54
Опиум, В качестве предположения, попробуйте с помощью PowerShell:
[string] (portqry | sls '\d+') -split '\s{2}' -replace '^\s' | sc log.txt
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.