【发布时间】:2012-11-23 01:35:17
【问题描述】:
我正在尝试弄清楚如何修改此脚本以进行精确搜索。 我需要搜索一个字符串(例如:“123.12”——带引号)
这是我到目前为止的脚本:
findstr %1 %systemdrive%\test\data.txt
IF %ERRORLEVEL% GTR 0 (
--- TRUE- DO SOMETHING
) ELSE (
--- FALSE- EXIT
)
这是我的文件 data.txt
“123.123” “345.345” “794.922”
(带引号)
问题是 findstr 正在查找解析的值:123.12,但它在我的列表中不存在。它错误地将 123.123 和 123.12 检测为其中的一部分。这就是为什么我想知道是否有任何方法可以使用引号进行搜索,我的意思是,格式化解析的值并将其添加引号以在文本文件中搜索。
我尝试了“%1”,但没有成功。
提前谢谢你!!
编辑
我正在尝试修改防火墙批处理脚本以阻止某些 IP
这是脚本
ipconfig | findstr "Address" | qut -d: -f 2 | qni > %systemdrive%\Qaas\host_ip.txt
findstr \"%1\" %systemdrive%\Qaas\bin\host_ip.qas || findstr \"%1\" %systemdrive%\Qaas\white_list.txt || findstr \"%1\" %systemdrive%\Qaas\blocqedips.qas
IF %ERRORLEVEL% GTR 0 (
echo "NOT FOUND"
netsh ipsec stat add filter filterlist="IP List" srcaddr=%1 dstaddr=Me description=%1 protocol=any mirrored=yes
echo Blocked IP address %1, reason - %2 connections on %3 >> %systemdrive%\Qaas\Qaas-%dw%-%mm%-%dd%-%hh%.log
echo %1 >> %systemdrive%\Qaas\blocqedips.qas
) ELSE (
echo "FOUND"
echo %1 is either host IP or already blocked earlier >> %systemdrive%\Qaas\Qaas-%dw%-%mm%-%dd%-%hh%.log
)
这是被阻止的 IP 文件: http://pastebin.com/cP4BteDM
现在,例如,尝试阻止 10.02.0,我在控制台“10.02.02”中收到。我猜是因为 10.02.0 是“instr”“10.02.02”。由于 FINDSTR 语句中存在这个问题,例如,我将永远无法禁止“10.02.0”。
感谢您的帮助,我已经尝试了您的答案,但没有成功:S
【问题讨论】:
-
这里你仍然需要
"\"%1\""而不是\"%1\"
标签: batch-file quotes findstr