我有包含以下内容的文本文件
Pool p c Dev Dev Total Enabled Used Free a b
------------ - - ----- ------------ -------- -------- -------- -------- --- ---
FC100 T F FBA RAID-3(1+1) 13849.1 13849.1 13119.4 7292.0 0 Ena
SATA500 T S FBA RAID-3(1+1) 50019.2 50019.2 46974.5 3044.9 Ena 0
我想从文件中显示提取 FC100 和 SATA500,因为这两行包含“Ena”。我的批处理脚本经验很少,因此以我有限的知识,我想出了以下脚本。
@ECHO OFF
setlocal enabledelayedexpansion
FOR /F "tokens=1,* delims= " %%a in (list.txt) DO (
if "%%b" NEQ "" (
set string=%%b
set substring= Ena
echo !string! |findstr "!substring!" > nul
if errorlevel 1 (
rem echo !SubString!
) else (
echo %%a
)
)
)
上面代码发生的情况是我得到了所需的输出,但我也得到了 Pool,因为该行包含启用的 Ena。如何提取仅包含 Ena 且与 Enabled 不匹配的行。
电流输出
Pool
FC100
SATA500
我尝试对 findstr 使用一些正则表达式魔法,但它不适合我。注意 - 我可以在 Perl 中解决这个问题,但不幸的是我无法在系统上安装 Perl,所以我必须批量执行此操作。