Войти

Показать полную графическую версию : команда find


a1738336
29-08-2014, 16:19
Доброго времени суток!
Подскажите пожалуйста, как правильно сделать. Суть такая - найти количество строк в текстовом файле, которые содержать знак "!". Пишу

find /c "!" c:\test\file.txt

Он возвращает такую строку
---------- C:\TEST\FILES.TXT: 0

Вот как сделать, чтобы он возвращал только результат, а не ---------- C:\TEST\FILES.TXT ? И, если возможно, как сделать, чтобы результат записывался в переменную, чтобы потом дальше можно было с ней работать, например if a=0 и тд. ?
Заранее спасибо!

Iska
29-08-2014, 17:11
@echo off
setlocal enableextensions disabledelayedexpansion

set sSourceFile=0001.txt

if exist "%sSourceFile%" (
for /f "usebackq delims=" %%i in (
`type "%sSourceFile%" ^| find.exe /i /c "!" 2^>nul`
) do set /a iCount = %%~i
) else (
echo Not found source file [%sSourceFile%].
exit /b 1
)

echo Found: %iCount%.

endlocal
exit /b 0

Georgio
29-08-2014, 17:11
@echo off

find /c "|"<"C:\test\file.txt"

for /f %%a in ('find /c "|"^<"C:\test\file.txt"') do set a=%%a
echo %a%
if %a%==0 (echo No) else (echo Yes)

pause>nul
exit /b

a1738336
29-08-2014, 17:46
Спасибо огромное!!

AlekseyB.
01-09-2014, 14:37
for /f %%a in ('find /c "|"^<"C:\test\file.txt"') do set a=%%a »
а подскажите пожалуйста что значит ^< в этой строчке ? идут сразу после find /c "|" ? и почему переменная обозначается %%a, а не %a% ?
Заранее спасибо.




© OSzone.net 2001-2012