Войти

Показать полную графическую версию : [решено] Разработать программу которая будет считать кол-во символов,строк,слов в .txt


klenb
13-05-2010, 18:50
Здравствуйте!
Надо разработать командный файл, который бы получал в качестве аргумента имя текстового файла
и выводил на экран информацию о том, сколько символов, слов и строк в текстовом файле.

В общем, я сделала все кроме слов.


dir %1
for /f %%i in ('type %1 ^|find /c /v "" ') do set ("line=%%i")
pause

amel27
14-05-2010, 05:35
@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

klenb
14-05-2010, 18:45
Спасибо, только с символами и строками хорошо, но вот со словами коряво...

amel27
15-05-2010, 14:39
со словами коряво»Не понял, в чем корявость - не работает?.. или Вы про эстетику? ;)

на самом деле, для символов тоже не всё чисто - такой способ хорош только для текстовых файлов в OEM/ANSI кодировке, в юникоде (UTF8/UTF16) один символ может занимать несколько байт - в постановке задачи про это ни слова... что касается слов, то даже в мощных языках типа Perl задача далеко не тривиальна - к примеру, символ "-" может являться соединителем одного слова (перенос, сложное слово), равно как и разделителем (тире)...

bred
16-05-2010, 08:27
Корявость в том, что слова не правильно считает... Например, у меня текст три строки, в каждой строке по одному слову - программа все правильно выдает 3, но стоит мне в одну из строк добавить еще одно слово, программа выдает 12!!!

amel27
16-05-2010, 08:47
bred, мне не удалось воспроизвести проблему, давайте конкретный пример

bred
16-05-2010, 09:33
Я же его только что привела... Вот конкретнее:
При таком тексте
aaa
bbb
ccc
выдает кол-во слов 3, а при таком
aaa ddd
bbb
ccc
12!

amel27
16-05-2010, 10:24
bred, у меня выдает 4
:unsure:

bred
16-05-2010, 19:38
А у меня, когда текст в первый раз запускаешь все нормально считает, а если тут же его изменить и сохранить, то уже не правильно... Но это мелочи! Спасибо большое, помог очень :kiss:

amel27
17-05-2010, 08:16
bred, решено (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_solved_thread_faq)?.. :blush2:

когда текст в первый раз запускаешь все нормально считает, а если тут же его изменить и сохранить, то уже не правильно »значит, у Вас есть уникальная возможность найти причину ; )

NiOl
18-05-2010, 15:19
aaa ddd
bbb
ccc
12! »

как раз 12 символов, смахивает на юникод.
(проверьте кодировочку)




© OSzone.net 2001-2012