正如标题所说,我想在Windows中将ip地址与批处理匹配,请告诉我如何做到这一点?
我看到" findstr "可以匹配像" [0-9] " 这样的正则表达式,但是"findstr"如何匹配它会出现一到三次?
我正在尝试编写一个 Windows 批处理文件,它将查看一个特定的 html 索引文件,它看起来像这样(简化)
<a href=emergency.htm>Emergency Calls</a><br>
<a href=EmeRgency.htm>Emergency Calls</a><br>
<a href=Emergency.htm>Emergency Calls</a><br>
<a href=EMERGENCY.htm>Emergency Calls</a><br>
<a href=E911.htm>Emergency Calls</a><br>
<a href=e911.htm>Emergency Calls</a><br>
Run Code Online (Sandbox Code Playgroud)
并打印文件名包含任何大写字母的所有链接,以便可以更正它们以不包含任何大写字母。
以下在 unix 中工作:
$ grep -v '^<a href=[^A-Z]*\.htm' helpindex.htm
<a href=EmeRgency.htm>Emergency Calls</a><br>
<a href=Emergency.htm>Emergency Calls</a><br>
<a href=EMERGENCY.htm>Emergency Calls</a><br>
<a href=E911.htm>Emergency Calls</a><br>
Run Code Online (Sandbox Code Playgroud)
( -v 反转匹配)
但是在 Windows 下使用 UnxUtils grep,它是 unix grep 的直接端口,我想不出一种引用有效正则表达式的方法。这对于在批处理文件中使用它是必要的。我试过 ', " 没有任何乐趣,还有 -E 开关。有没有办法使用这个特定的工具集来做到这一点?
@janos 引导我使用 Windows 中的 findstr 命令,但它仍然不起作用。查看 findstr 帮助我看到:
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] …
当我使用时,grep我会得到一个匹配结果列表,其中包含所有子目录的完整文件路径。
当我这样做时findstr- 我没有得到内联结果。
我的问题是:如何findstr内联显示完整的文件路径?
因此,我想以黄色打印Jäger炸弹和mação,其余部分为标准白色。我的代码是:
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
call :colorEcho 0e "Jäger bomb"
echo Jäger bomb
call :colorEcho 0e "maçã"
echo maçã
pause
exit
:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i
Run Code Online (Sandbox Code Playgroud)
问题是,当输出时,输出为“ J,,ger”,并显示错误消息“ FINDSTR: Cannot open maøa”。但是使用标准的echo命令都可以正常打印。是什么原因造成的,我该如何解决?任何帮助深表感谢!
我正在创建一个bat脚本,我应该检查变量是否包含目录的有效绝对路径,以及另一个变量是否包含Windows 8及更高版本的文件的有效名称.
那么,我该如何进行这些检查呢?
谢谢
再见
我一直在尝试解析格式为“xxxx[Delimiter]xxxx[Delimiter]xxxx”的mac,其中“x”在[0-9,AF,af]中,“[Delimiter]”在[:,.,- ]。我已尝试以下代码,并引用标题为Regex 的示例来匹配批处理脚本中的变量以及什么是 MAC 地址的正则表达式?。
set MACAddr=012a.23fa.5ffc
If [%MACAddr%] EQU [] (
echo MAC Address is not set. Please set it to proceed.
) else (
echo %MACAddr%|findstr /r "^([0-9A-Fa-f]{2}[:.-]?){5}([0-9A-Fa-f]{2})$"
if errorlevel 1 (echo Mac %MACAddr% is not of same Format as xxxx.xxxx.xxxx) else ( pause )
)
Run Code Online (Sandbox Code Playgroud)
也尝试过这个
echo %MACAddr%|findstr /r "^([0-9A-Fa-f]{4})([:.-])([0-9A-Fa-f]{4})([:.-])([0-9A-Fa-f]{4})$"
Run Code Online (Sandbox Code Playgroud)
但它只能运行if errorlevel 1 (echo Mac %MACAddr% is not of same Format as xxxx.xxxx.xxxx)。请告诉我我做错了什么。
我试图以这种方式比较两个文件,文件1的每一行将与文件2的每一行进行比较,如果没有找到匹配,则将该行写入单独的文件.
下面是我写的代码,但它没有按预期工作,
@echo on
cd path
for /f %%a in (file1.txt) do (
for /f %%b in (file2.txt) do (
if %%a==%%b
(
echo lines are same
) else (
echo %%a >> file3.txt
)
)
)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说,命令的语法不正确.请帮我解决一下这个.
batch-file ×6
findstr ×4
windows ×3
grep ×2
call ×1
cmd ×1
colors ×1
command-line ×1
dos ×1
filenames ×1
ip ×1
ip-address ×1
path ×1
validation ×1