Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本:通过多个文件搜索部分IP地址并记录_Batch File - Fatal编程技术网

Batch file 批处理脚本:通过多个文件搜索部分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

我有多个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 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
    。无法将文本文件导入命令。
    要么将文件作为参数提供给
    查找
    ,要么使用重定向(这仅适用于单个文件,但不适用于多个文件,也不适用于
    *
    /
    模式)
  • 您对/f使用的
    不正确。
    看起来好像您想要解析
    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
    。无法将文本文件导入命令。
    要么将文件作为参数提供给
    查找
    ,要么使用重定向(这仅适用于单个文件,但不适用于多个文件,也不适用于
    *
    /
    模式)
  • 您对/f使用的
    不正确。
    看起来好像您想要解析
    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%”
    (将空格替换为零)