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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Разработать программу которая будет считать кол-во символов,строк,слов в .txt (http://forum.oszone.net/showthread.php?t=175606)

klenb 13-05-2010 18:50 1412583

Разработать программу которая будет считать кол-во символов,строк,слов в .txt
 
Здравствуйте!
Надо разработать командный файл, который бы получал в качестве аргумента имя текстового файла
и выводил на экран информацию о том, сколько символов, слов и строк в текстовом файле.

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

Цитата:

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

amel27 14-05-2010 05:35 1412893

Код:

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

Спасибо, только с символами и строками хорошо, но вот со словами коряво...

amel27 15-05-2010 14:39 1413841

Цитата:

Цитата klenb
со словами коряво»

Не понял, в чем корявость - не работает?.. или Вы про эстетику? ;)

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

bred 16-05-2010 08:27 1414309

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

amel27 16-05-2010 08:47 1414311

bred, мне не удалось воспроизвести проблему, давайте конкретный пример

bred 16-05-2010 09:33 1414325

Я же его только что привела... Вот конкретнее:
При таком тексте
Цитата:

aaa
bbb
ccc
выдает кол-во слов 3, а при таком
Цитата:

aaa ddd
bbb
ccc
12!

amel27 16-05-2010 10:24 1414353

bred, у меня выдает 4
:unsure:

bred 16-05-2010 19:38 1414658

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

amel27 17-05-2010 08:16 1414929

bred, решено?.. :blush2:

Цитата:

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

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

NiOl 18-05-2010 15:19 1416029

Цитата:

Цитата bred
aaa ddd
bbb
ccc
12! »

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


Время: 17:37.

Время: 17:37.
© OSzone.net 2001-