Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Подсчёт к-ва символов в строках .txt файла и вывод отчёта

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Apr 14, 2010 00:51    Post subject: Подсчёт к-ва символов в строках .txt файла и вывод отчёта Reply with quote

Подскажите, можно ли сделать такое.
Есть текстовый файл, некоторые строки периодически обновляются...
Необходимо подсчитать количество символов тех строк, которые начинаются с "Info" ("Info_1","Info_2"...) и вывести какой-либо отчёт
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Wed Apr 14, 2010 01:16    Post subject: Reply with quote

Общую сумму или отдельно по каждой строке? Как должен выглядеть отчёт? Подробнее описывай ТЗ
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Apr 15, 2010 00:24    Post subject: Reply with quote

Отсчёт должен быть по каждой строке, к примеру:
Info_1 500 знаков
Info_2 655 знаков
Info_3 126 знаков
.....
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Apr 15, 2010 01:53    Post subject: Reply with quote

Del
Более продвинутая версия здесь


Last edited by Tol!k on Fri Apr 16, 2010 20:40; edited 2 times in total
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Apr 15, 2010 09:30    Post subject: Reply with quote

[off]
Tol!k
Очумительный подход! Клёво! Idea
[/off]
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Apr 15, 2010 12:33    Post subject: Reply with quote

Tol!k спасибо за отклик, как сделать так, чтобы это срабатывало
1. это bat или cmd?
2. где прописывать параметры внутри кода или в кнопке?
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Thu Apr 15, 2010 13:40    Post subject: Reply with quote

Andrey_A wrote:
1. это bat или cmd?
Я ещё бы добавил "или vbs?" Smile

Andrey_A wrote:
как сделать так, чтобы это срабатывало
У меня сработало на кнопку
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\CMD\Подсчёт количества символов в строках файла.CMD
%N Info
%COMMANDER_PATH%\Totalcmd.exe,3
Подсчёт количества символов в строках файла


-1
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Apr 15, 2010 14:46    Post subject: Reply with quote

Есть особенность - пустое пространство после Info_N считается за 1 символ.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Apr 15, 2010 15:08    Post subject: Reply with quote

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
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Apr 15, 2010 18:34    Post subject: Reply with quote

Batya wrote:
Очумительный подход!
Можно написать на чистом бате, но будет больше пилиться HDD

Andrey_A wrote:
1. это bat или cmd?
Лучше назвать CMD
Andrey_A wrote:
2. где прописывать параметры внутри кода или в кнопке?
В кнопке

Batya wrote:
Есть особенность
К сожалению, есть
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Apr 15, 2010 18:35    Post subject: Reply with quote

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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Apr 15, 2010 19:07    Post subject: Reply with quote

Tol!k низкий тебе поклон!!! Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом, иначе _len.txt каждый раз становится всё больше и больше
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Apr 16, 2010 12:24    Post subject: Reply with quote

Andrey_A wrote:
Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом

Можно вместо ">> _len.txt" написать "> _len.txt"
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Apr 17, 2010 21:35    Post subject: Reply with quote

Quote:
Batya wrote:
Есть особенность
К сожалению, есть
Исправил в последней версии.
Batya wrote:
Quote:
Единственное что я у себя добавил - это удаление файла отчета, перед подсчётом
Можно вместо ">> _len.txt" написать "> _len.txt"
Нет нельзя. Удаление сделал.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group