我有多个包含30个跃点的TraceRT日志文件。我只是寻找类似的IP(例如192.168.1),并希望将其记录在一个文件中: 1)成功:在%Filename%中找到%IP% 2)失败:在%Filename%
中找不到指定的IP我正在尝试使用:
rem************************************************************
:START
@ ECHO OFF
rem US date
set YEAR=%DATE:~10,4%
set MONTH=%DATE:~4,2%
set DAY=%DATE:~7,2%
rem US hour
set HOUR=%TIME:~0,2%
set MIN=%TIME:~3,2%
set SEC=%TIME:~6,2%
set HUNDREDS=%TIME:~9,2%
set HOURMIN=%HOUR%%MIN%
rem Make sure that hour has two digits
IF %HOUR% GEQ 10 goto twoh
set HOUR1=%TIME:~1,1%
set TWOHOUR=0%HOUR1%
goto fulltid
:twoh
set TWOHOUR=%HOUR%
:fulltid
set FULLTIME=%TWOHOUR%'%MIN%'%SEC%'%HUNDREDS%
set FTIME=%TWOHOUR%:%MIN%:%SEC%
@echo off & setLocal EnableDELAYedeXpansion
findstr /m "192.168.1" *.txt > FILENAME
echo on
for /f "tokens=*" %%a in (*.txt ^| find "192.168.1") do (
IF %%a neq %%b (
echo Suscessful: %%a %FILENAME% >> Log%YEAR%%MONTH%%DAY%.txt
) ELSE (
echo Fail: Specified IP not found in %FILENAME% >> Log%YEAR%%MONTH%%DAY%.txt
)
)
goto START
rem************************************************************
答案 0 :(得分:0)
| find
。您不能将(a)文本文件传输到命令中
将文件作为参数提供给find
,或者使用重定向(这仅适用于单个文件,但不适用于多个文件,也不适用于*
/ ?
模式) for /f
看起来好像要解析find
的输出。要实现这一点,但必须将命令括在单引号'
中。输入for /?
并查看帮助文本以获取更多详细信息。以下代码行应该有效:
for /f "tokens=*" %%a in ('find "192.168.1" *.txt') do (
要获取当前日期和时间,我强烈建议您仅在单行内阅读变量%DATE%
和%TIME%
一次!否则,您可能会遇到问题,特别是关于小数秒,在连续扩展之间可能不相等。
为确保%HOUR%
有两位数,您只需使用set HOUR=0%HOUR%
然后set HOUR=%HOUR:~-2%
。
由于一位数%HOUR%
在此处以空格为前缀,因此您只需将空格替换为零即可使其更简单(感谢您的comment,@ Stephan!):{ {1}}。