Batch file 批处理脚本:通过多个文件搜索部分IP地址并记录
我有多个TraceRT日志文件,包含30个跃点。我只是在寻找类似的IP(例如192.168.1),并希望将其记录在一个文件中: 1) 成功:%IP%在%Filename%中找到 2) 失败:在%Filename%中找不到指定的IP 我正在尝试使用:Batch file 批处理脚本:通过多个文件搜索部分IP地址并记录,batch-file,Batch File,我有多个TraceRT日志文件,包含30个跃点。我只是在寻找类似的IP(例如192.168.1),并希望将其记录在一个文件中: 1) 成功:%IP%在%Filename%中找到 2) 失败:在%Filename%中找不到指定的IP 我正在尝试使用: rem************************************************************ :START @ ECHO OFF rem US date set YEAR=%DATE:~10,4% set MON
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************************************************************
| find
。无法将文本文件导入命令。要么将文件作为参数提供给
查找
,要么使用重定向(这仅适用于单个文件,但不适用于多个文件,也不适用于*
/?
模式)不正确。
看起来好像您想要解析find
的输出。要实现这一点,您必须将命令括在单引号中“
。键入以获取/?
并查看帮助文本以了解更多详细信息
for /f "tokens=*" %%a in ('find "192.168.1" *.txt') do (
要获取当前日期和时间,我强烈建议只在一行内读取变量
%date%
和%time%
一次!否则,您可能会遇到问题,特别是关于分数秒的问题,这可能在连续展开之间不相等
要确保%HOUR%
有两位数字,只需使用设置HOUR=0%HOUR%
然后设置HOUR=%HOUR:~-2%
由于一位%HOUR%
的前缀是一个空格,因此您只需将空格替换为零:set HOUR=%HOUR:=0%
,就可以让它变得更简单(感谢您的,@Stephan!)
| find
。无法将文本文件导入命令。要么将文件作为参数提供给
查找
,要么使用重定向(这仅适用于单个文件,但不适用于多个文件,也不适用于*
/?
模式)不正确。
看起来好像您想要解析find
的输出。要实现这一点,您必须将命令括在单引号中“
。键入以获取/?
并查看帮助文本以了解更多详细信息
for /f "tokens=*" %%a in ('find "192.168.1" *.txt') do (
要获取当前日期和时间,我强烈建议只在一行内读取变量
%date%
和%time%
一次!否则,您可能会遇到问题,特别是关于分数秒的问题,这可能在连续展开之间不相等
要确保%HOUR%
有两位数字,只需使用设置HOUR=0%HOUR%
然后设置HOUR=%HOUR:~-2%
由于一个一位数的
%HOUR%%
在这里加了一个空格作为前缀,您只需将空格替换为零即可(感谢您的,@Stephan!)。设置的HOUR=%HOUR:=0%没有%b
,因为您只有一个标记:*
,而不是乱用本地日期/时间格式,我强烈推荐一种独立于区域设置的方法没有%%b
,因为您只有一个标记:*
我强烈推荐一种独立于区域设置的方法,这是一种更简单的“两位数小时技巧”:设置“小时=%hour:=0%”
(将空格替换为零)这里有一个更简单的“两位数小时技巧”:设置“hour=%hour:=0%”
(将空格替换为零)