次を含むテキストファイルがあります
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 を抽出して表示したいのは、これらの 2 行に "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
)
)
)
上記のコードで何が起こっているかというと、必要な出力を取得していますが、行に有効になっている Ena が含まれているため、Pool も取得しています。Ena のみを含み、Enabled と一致しない行を抽出する方法を教えてください。
電流出力
Pool
FC100
SATA500
findstr で正規表現マジックを使用しようとしましたが、うまくいきません。注 - この問題は Perl で解決できますが、残念ながらシステムに Perl をインストールできないため、これをバッチで行う必要があります。