Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Процентное соотношение имен в файле

Ответить
Настройки темы
CMD/BAT - Процентное соотношение имен в файле

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте.
Собственно, есть файл, в котором много разных имен/названий того или иного файла. Нужно сделать процентное соотношение этих имен в файле.

Пример:

==Folders==
File1.exe
File1.exe
File2.exe
File2.exe
File1.exe
File3.exe
File1.exe
File2.exe
File4.exe
File1.exe

--> 50% - File1 --> 30% File2 --> 10% File3 --> 10% File4

Отправлено: 17:51, 08-06-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата f1rstonlyone@vk:
Собственно, есть файл, в котором много разных имен/названий того или иного файла. »
Упакуйте образец этого файла в архив и приложите к сообщению.

Отправлено: 18:42, 08-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать



Файлbase.rar

Отправлено: 18:45, 08-06-2017 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


f1rstonlyone@vk,
именно вот так скопировал в "file.txt":
Код: Выделить весь код
==Folders==
File1.exe
File1.exe
File2.exe
File2.exe
File1.exe
File3.exe
File1.exe
File2.exe
File4.exe
File1.exe
если имена файлов не будут иметь пробелов, то будет работать такой код:
Код: Выделить весь код
@echo off
<file.txt (for /f "skip=1 delims=" %%a in ('find /v ""^& find /c /v ""') do set /a cs=%%a-1& set /a $_%%a+=1)
for /f "skip=1 tokens=2* delims=_=" %%a in ('set $_') do set /a "pr=%%b*100/%cs%"& cmd/v/c echo %%a=!pr!%%
pause& exit

Отправлено: 18:52, 08-06-2017 | #4


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать



Цитата alpap:
f1rstonlyone@vk,
именно вот так скопировал в "file.txt":
Код:
==Folders==
File1.exe
File1.exe
File2.exe
File2.exe
File1.exe
File3.exe
File1.exe
File2.exe
File4.exe
File1.exe
если имена файлов не будут иметь пробелов, то будет работать такой код:
Код:
@echo off
<file.txt (for /f "skip=1 delims=" %%a in ('find /v ""^& find /c /v ""') do set /a cs=%%a-1& set /a $_%%a+=1)
for /f "skip=1 tokens=2* delims=_=" %%a in ('set $_') do set /a "pr=%%b*100/%cs%"& cmd/v/c echo %%a=!pr!%%
pause& exit »
Кинул батник в папку с текстовым документом, запустил, выдало
Screenshot_1.png

Отправлено: 18:59, 08-06-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Посредством LogParser (Средство Log Parser 2.2 - TechNet - Microsoft):
Код: Выделить весь код
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1, MUL(PROPCOUNT(Field1), 100.0) AS Percent FROM 'C:\Мои проекты\0083\base.txt' GROUP BY Field1 ORDER BY Percent DESC" -i:CSV -headerRow:OFF -q:ON
Скрытый текст

Или так:
Код: Выделить весь код
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1, COUNT(Field1) AS Total, MUL(PROPCOUNT(Field1), 100.0) AS Percent INTO DATAGRID FROM 'C:\Мои проекты\0083\base.txt' GROUP BY Field1 ORDER BY Percent DESC" -i:CSV -headerRow:OFF -q:ON
Скрытый текст

Или даже так:
Код: Выделить весь код
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1, COUNT(Field1) AS Total INTO Chart.gif FROM 'C:\Мои проекты\0083\base.txt' GROUP BY Field1" -i:CSV -headerRow:OFF -q:ON -o:CHART -chartType:ColumnClustered -groupSize:2048x768 -view:ON
Скрытый текст

Код: Выделить весь код
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT Field1, COUNT(Field1) AS Total INTO Chart.gif FROM 'C:\Мои проекты\0083\base.txt' GROUP BY Field1" -i:CSV -headerRow:OFF -q:ON -o:CHART -chartType:Pie -groupSize:1024x1024 -view:ON
Скрытый текст
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:18, 08-06-2017 | #6


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Вот вариант решения
Код: Выделить весь код
@Echo OFF
cls

Set "FileIn=Z:\Box_In\file.txt"

SetLocal EnableExtensions EnableDelayedExpansion

Set /A nAll=0
Set /A nName=0
Set "Str="

For /F "usebackq tokens=*" %%s In (`More +1 "%FileIn%" 2^>nul^|Sort`) Do (
	If /I Not "!Str!"=="%%s" (
		Set /A nName+=1
		Set "Str=%%s"
		Set /A n!nName!=0
		Set "Name!nName!=%%s"
	)
	Set /A nAll+=1
	Set /A n!nName!+=1
)

Set "OutStr="
FOR /L %%i IN (1,1,%nName%) DO Call :Out "Name%%i" "n%%i"

Echo %OutStr%

pause
GoTo :Eof

:Out
	Call Set "Name=%%%~1%%"
	Call Set "n=%%%~2%%"
	Set /A Percent=((n*10000)/nAll+50)/100
	Set "OutStr=%OutStr% --^>%Percent%%% - %Name%"
GoTo :Eof

Не нашел ничего общего между файлом base.txt в представленном base.rar и анонсированном тексте в самом вопросе
Обрабатывал файл, где первой строкой идет строка
==Folders==
Я её пропускаю.
И далее
File1.exe
File1.exe
File2.exe
File2.exe
File1.exe
File3.exe
File1.exe
File2.exe
File4.exe
File1.exe

Есть пробелы, нет - не важно.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 08-06-2017 в 22:08.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:33, 08-06-2017 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата f1rstonlyone@vk:
, выдало »
первую строку конечно лучше убрать, а вот пробелы недопустимы, но выводит у меня нормально:
Файл 146164
писалось в принципе на скорую руку, но как вариант, когда лучшего нет, а так варианты лучше использовать предоставленные Iska и megaloman

Последний раз редактировалось alpap, 07-12-2017 в 15:07.


Отправлено: 21:47, 08-06-2017 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Процентное соотношение имен в файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Asus M5A99FX Pro и соотношение частот RevanSithLord Материнские платы и память 0 16-01-2017 06:52
соотношение размеров мониторов truvo Хочу все знать 15 05-05-2013 09:39
Интерфейс - Экран - соотношение сторон и размеры jungha Microsoft Windows 2000/XP 6 04-05-2012 06:07
Соотношение сторон Maloy clickonline Видео и аудио: обработка и кодирование 35 04-03-2009 13:49
Видеоклипы - соотношение объем/качество??? alexra Хочу все знать 7 03-12-2006 17:48




 
Переход