Разработать программу которая будет считать кол-во символов,строк,слов в .txt
Здравствуйте!
Надо разработать командный файл, который бы получал в качестве аргумента имя текстового файла
и выводил на экран информацию о том, сколько символов, слов и строк в текстовом файле.
В общем, я сделала все кроме слов.
Цитата:
dir %1
for /f %%i in ('type %1 ^|find /c /v "" ') do set ("line=%%i")
pause
|
|
Код:
@echo off
if "%~1"=="" echo using: %~nx0 filename& pause >nul& exit 1
for /f %%i in ('^<"%~1" find /c /v ""') do set $l=%%i
for /f "usebackq delims=" %%a in ("%~1") do for %%i in (%%a) do set /a $w+=1
echo lines : %$l%
echo words : %$w%
echo symbols: %~z1
pause >nul
|
Спасибо, только с символами и строками хорошо, но вот со словами коряво...
|
Не понял, в чем корявость - не работает?.. или Вы про эстетику? ;)
на самом деле, для символов тоже не всё чисто - такой способ хорош только для текстовых файлов в OEM/ANSI кодировке, в юникоде (UTF8/UTF16) один символ может занимать несколько байт - в постановке задачи про это ни слова... что касается слов, то даже в мощных языках типа Perl задача далеко не тривиальна - к примеру, символ "-" может являться соединителем одного слова (перенос, сложное слово), равно как и разделителем (тире)...
|
Корявость в том, что слова не правильно считает... Например, у меня текст три строки, в каждой строке по одному слову - программа все правильно выдает 3, но стоит мне в одну из строк добавить еще одно слово, программа выдает 12!!!
|
bred, мне не удалось воспроизвести проблему, давайте конкретный пример
|
Я же его только что привела... Вот конкретнее:
При таком тексте
выдает кол-во слов 3, а при таком
12!
|
bred, у меня выдает 4
:unsure:
|
А у меня, когда текст в первый раз запускаешь все нормально считает, а если тут же его изменить и сохранить, то уже не правильно... Но это мелочи! Спасибо большое, помог очень :kiss:
|
bred, решено?.. :blush2:
Цитата:
Цитата bred
когда текст в первый раз запускаешь все нормально считает, а если тут же его изменить и сохранить, то уже не правильно »
|
значит, у Вас есть уникальная возможность найти причину ;)
|
как раз 12 символов, смахивает на юникод.
(проверьте кодировочку)
|
Время: 17:37.
© OSzone.net 2001-