0
for /f "tokens=3" %%f in ('find /c /i "apples" "test.txt"') do set varMWG=%%f
REM echo %varMWG%

if %varMWG% EQU 1 (
    @echo TRUE
) else (
    @echo FALSE
)

TRUE または FALSE をエコーする代わりに、文字列が見つかった場合は変数行をエコーし​​、見つからない場合は FALSE をエコーし​​ます。

test.txt が含まれています

fdgsdf
hgsfrtgyr
apples
fdsgfghs
erwyuweu
4

2 に答える 2

1

一致する行をエコーするか、一致する行がない場合は FALSE をエコーするだけでよい場合 (つまり、変数は必要ありません)、

findstr /ilc:"apples" "test.txt" || echo FALSE

検索に一致する行が複数ある可能性があることに注意してください。

最後に見つかった行を含む変数が必要な場合は、次のようにします。

set "varMWG="
for /f "delims=" %%S in ('findstr /ilc:"apples" "test.txt"') do set "varMWG=%%S"
if defined varMWG (echo %varMWG%) else echo FALSE

注 - 展開を遅らせた方が安全です。varMWG の内容によっては、正規展開を使用した ECHO が失敗する場合があります。

最初に見つかった行を含む変数が必要な場合は、次のようにします。

set "varMWG="
for /f "delims=" %%S in ('findstr /ilc:"apples" "test.txt"') do (
  set "varMWG=%%S"
  echo %%S
  goto :break
)
:break
if not defined varMWG echo FALSE

この最後のオプションでは、拡張を遅らせる必要はありません。

于 2012-09-28T18:07:13.970 に答える
0

「変数行をエコーする」とは、検索文字列「apples」をエコーすることを意味する場合、次のコードで十分です。

@echo off
for /f "tokens=* delims= " %%f in (test.txt) do (
if %%f EQU apples (echo %%f
) else echo false
)

出力:

false
false
apples
false
false
于 2012-09-28T17:52:41.637 に答える