Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   команда find (http://forum.oszone.net/showthread.php?t=287202)

a1738336 29-08-2014 16:19 2395840

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

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

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

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

Iska 29-08-2014 17:11 2395861

Код:

@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 2395862

Код:

@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 2395875

Спасибо огромное!!

AlekseyB. 01-09-2014 14:37 2397003

Цитата:

Цитата Georgio
for /f %%a in ('find /c "|"^<"C:\test\file.txt"') do set a=%%a »

а подскажите пожалуйста что значит ^< в этой строчке ? идут сразу после find /c "|" ? и почему переменная обозначается %%a, а не %a% ?
Заранее спасибо.


Время: 23:59.

Время: 23:59.
© OSzone.net 2001-