2016-08-29 94 views

答えて

2

findstrの結果をループして、行内に少なくとも1文字(regex =。)を探して数えてください。 空の行はマッチしません。

@echo off 

set counter=0 
for /F %%a in ('findstr /R . test.txt') do (set /A counter=%counter%+1) 

echo %counter% 

スペースのみを含む行が空白であることを考慮すれば、スペースのみを含む行を除外しすぎ/C:"[^ ]";が含まれています。この意志ライン、=,しかし

findstr /R /C:"[^ ]" test.txt 
0
@echo off 
:==== 
set "file=c:\file.txt" 
:===== 
set count=1 
for /f "usebackq" %a in ("%file%") do set /a count=count+1 
echo %count% 

.を置き換えます、<tab><space><new line>シンボル(スペースとタブと改行だけではありません)

1

は、単にそれが空行をスキップして、カウンタ変数を使用するのでfor /Fループを使用して(この例ではfile.txt)テキストファイルの内容を反復:

set /A "COUNT=0" 
for /F useback^ delims^=^ eol^= %%L in ("file.txt") do set /A "COUNT+=1" 
echo %COUNT% 

構文useback^ delims^=^ eol^=にするために使用される奇数の引用符で囲まれていないオプション文字列eoldelimsの両方を空に設定してください(eolの既定値は;です)。空白(空白、タブ)だけを含む行を空と見なす場合は、オプションdelims^=^を削除するだけです。

3
findstr "." test.txt | find /c /v "" 

findstrは、入力ファイル内の行に対して正規表現.(一致少なくとも単一の文字)を使用し、パイプfindにマッチングラインは出力ラインをカウントするだろう。

関連する問題