View previous topic :: View next topic |
Author |
Message |
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Wed Apr 14, 2010 00:51 Post subject: Подсчёт к-ва символов в строках .txt файла и вывод отчёта |
|
|
Подскажите, можно ли сделать такое.
Есть текстовый файл, некоторые строки периодически обновляются...
Необходимо подсчитать количество символов тех строк, которые начинаются с "Info" ("Info_1","Info_2"...) и вывести какой-либо отчёт |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Apr 14, 2010 01:16 Post subject: |
|
|
Общую сумму или отдельно по каждой строке? Как должен выглядеть отчёт? Подробнее описывай ТЗ |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Apr 15, 2010 00:24 Post subject: |
|
|
Отсчёт должен быть по каждой строке, к примеру:
Info_1 500 знаков
Info_2 655 знаков
Info_3 126 знаков
..... |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Apr 15, 2010 01:53 Post subject: |
|
|
Del
Более продвинутая версия здесь
Last edited by Tol!k on Fri Apr 16, 2010 20:40; edited 2 times in total |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Apr 15, 2010 09:30 Post subject: |
|
|
[off]
Tol!k
Очумительный подход! Клёво!
[/off] _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Apr 15, 2010 12:33 Post subject: |
|
|
Tol!k спасибо за отклик, как сделать так, чтобы это срабатывало
1. это bat или cmd?
2. где прописывать параметры внутри кода или в кнопке? |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Thu Apr 15, 2010 13:40 Post subject: |
|
|
Andrey_A wrote: | 1. это bat или cmd? | Я ещё бы добавил "или vbs?"
Andrey_A wrote: | как сделать так, чтобы это срабатывало | У меня сработало на кнопку
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\CMD\Подсчёт количества символов в строках файла.CMD
%N Info
%COMMANDER_PATH%\Totalcmd.exe,3
Подсчёт количества символов в строках файла
-1
|
|
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Apr 15, 2010 14:46 Post subject: |
|
|
Есть особенность - пустое пространство после Info_N считается за 1 символ. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Apr 15, 2010 15:08 Post subject: |
|
|
Tol!k всё работает, спасибо. Есть ещё несколько просьб
Сам файл выглядет таким образом
Info1=информация
Info1_dop=информация
Info1_dop2=информация
...
Info2=информация
Info2_dop=информация
Info2_dop2=информация
...
1. т.к. длинные строки, как сделать так чтобы сами строки (информация) в отчёте не отображались, а только их ПрефиксN - ...
Info1 - 500 знаков
Info2 - 655 знаков
Info3 - 126 знаков
.....
2. Есть много дополнительных строк Info1_dop=, Info1_dop2=, которые в отчёте не нужны, можно их не отображать (т.е.ПрефиксN_...) не отображать), а отображать только строки которые начинаются Info1=, Info2=, Info3= .... |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Apr 15, 2010 18:34 Post subject: |
|
|
Batya wrote: | Очумительный подход! | Можно написать на чистом бате, но будет больше пилиться HDD
Andrey_A wrote: | 1. это bat или cmd? | Лучше назвать CMD
Andrey_A wrote: | 2. где прописывать параметры внутри кода или в кнопке? | В кнопке
Batya wrote: | Есть особенность | К сожалению, есть |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Apr 15, 2010 18:35 Post subject: |
|
|
Andrey_A wrote: | Есть ещё несколько просьб |
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off &chcp 1251 >nul &setlocal
rem Параметры: файл.txt "Префикс"
rem Подсчёт количества символов в строках, которые начинаются с "Префикс"
rem Автор: Tol!k
rem В префиксе можно использовать метасимволы:
rem . Подстановочный знак: любой символ
rem * Повтор: ноль или более предшествующих символов или классов символов
rem [класс] Класс символа: любой символ из множества
rem [x-y] Диапазон: любой символ из диапазона
echo Set Args = WScript.Arguments> "%temp%\StrLen.vbs"
echo WScript.StdOut.Write Len(Args(0))>> "%temp%\StrLen.vbs"
set "n=1"
for /f "delims=" %%i in ('findstr /b /r /c:"%~2" "%~1"') do call :cnt "%%~i"
move _len.txt _len.txt.bak 2>nul
set "n=1"
for /f "tokens=1 delims== " %%i in ('findstr /b /r /c:"%~2" "%~1"') do call :out "%%~i"
del /q "%temp%\StrLen.vbs" &if exist _len.txt start "" _len.txt
exit /b
:cnt
for /f "delims=" %%a in ('cscript.exe //b "%temp%\StrLen.vbs" "%~1"') do (
set /a n+=1 &title Found: %n% &set "a%n%=%%a"
)
goto :eof
:out
set /a n+=1 &call echo %~1 - %%a%n%%% знаков>> _len.txt
goto :eof
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
= ,похоже, является спецсимволом, поэтому выражение с ним приходится заключать в кавычки:
Code: | "Info.=" — любой символ
"Info[0-9]=" — одна цифра
"Info[0-9][0-9]=" — две цифры
"Info[0-9]*=" — любое кол-во цифр |
Last edited by Tol!k on Sun Apr 25, 2010 16:25; edited 3 times in total |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Apr 15, 2010 19:07 Post subject: |
|
|
Tol!k низкий тебе поклон!!! Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом, иначе _len.txt каждый раз становится всё больше и больше |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Fri Apr 16, 2010 12:24 Post subject: |
|
|
Andrey_A wrote: | Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом |
Можно вместо ">> _len.txt" написать "> _len.txt" _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Apr 17, 2010 21:35 Post subject: |
|
|
Quote: | Batya wrote: | Есть особенность | К сожалению, есть | Исправил в последней версии.
Batya wrote: | Quote: | Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом | Можно вместо ">> _len.txt" написать "> _len.txt" | Нет нельзя. Удаление сделал. |
|
Back to top |
|
|
|