С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1780 / 762 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
1

Вывод размера файла с разделителями групп разрядов

21.05.2013, 20:23. Показов 2985. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Что-то не получается. Необходимо значение %%~za типа 12345678 привести к типу 12 345 678
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2013, 20:23
Ответы с готовыми решениями:

Присвоение переменной формат с разделителями групп разрядов
Здравствуйте, уважаемые программисты! Учил я, было, Visual Basic еще в 2010 (ну как в универе учат...

Вывод в DataGridView из файла с разделителями
string str; string str1 = File.ReadAllText(@"polz.txt").Split('\n'); int...

Разделитель групп разрядов для числа
Добрый день, господа. Впал в ступор. У меня вычисляются некоторые суммы (тысячи ,сотни тысяч,...

Вывод групп чисел из файла PDB в матрицу
есть файл с форматом .pdb (кто не знаком Protein Data Bank), у меня есть парсер на питоне для таких...

10
Модератор
Эксперт JS
5239 / 2112 / 416
Регистрация: 06.01.2013
Сообщений: 4,843
21.05.2013, 21:40 2
Цитата Сообщение от sov44 Посмотреть сообщение
Что-то не получается. Необходимо значение %%~za типа 12345678 привести к типу 12 345 678
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
setlocal enabledelayedexpansion
set without=1234567625351531
for /L %%A IN (0,1,10000) DO (set len=%%A&if "!without:~%%A,1!"=="" (goto :e1))
:e1
set /a last=!len! %% 3
if !last!==0 (set last=3)
set with=!without:~0,%last%!
for /L %%A IN (!last!,3,!len!) DO (set with=!with! !without:~%%A,3!)
echo.%with%
pause>nul
exit /b
Попробуй
2
1780 / 762 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
21.05.2013, 22:04  [ТС] 3
FraidZZ, благодарю! Думал, код будет проще. Я баловался с !rr:~0,-3!
0
Эксперт WindowsАвтор FAQ
18017 / 7718 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
21.05.2013, 23:39 4
Лучший ответ Сообщение было отмечено как решение

Решение

Помнится как-то была здесь уважаемая -Naka,
и написала одно важное замечание, что циклы в какой-то мере - это зло. Почему не писать проще и использовать метки.
Вдоволь поразмыслив и пересмотрев некоторые алгоритмы я согласился, т.к. понял, что множество написанных нами функций работали бы гораздо быстрее через метки.
Может, это и не имеет прямого отношения к данной теме, но
хоть и поздно, мне хотелось бы на этом заострить внимание всех основных кодеров этого раздела.
Если возможность есть, почему бы ее не использовать в целях преимущества, не обращая внимания, что это плохой тон в языках высокого уровня.

Итак, по методу sov44:

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
setlocal enableextensions
set num=12345678
 
:begin
  set ret=%num:~-3% %ret%
  set num=%num:~0,-3%
  if "%num%" neq "" (goto begin) else (set ret=%ret:~0,-1%)
echo -%ret%-
 
pause
3
0 / 0 / 0
Регистрация: 09.12.2015
Сообщений: 3
09.12.2015, 18:37 5
А можно ли сделать так, чтобы три последних символа не писались и тогда вместо байт считать в килобайтах?
0
734 / 332 / 134
Регистрация: 17.03.2014
Сообщений: 832
09.12.2015, 19:51 6
s3r10rus, тогда перед числом следует вывести символ ~, либо слово "приблизительно"
т.к. 1 килобайт = 1024 байта
0
volodin661
09.12.2015, 22:18
  #7

Не по теме:

и всё ж таки, когда вы начнете пользоваться приличными инструментами?

Код
REVERSE СТРОКИ;;ВСТАВЛЯЕМ ПРОБЕЛ ПОСЛЕ КАЖДОЙ 3-ей ЦИФРЫ;;REVERSE СТРОКИ
Код
echo 12345 вышел зайчик  23243437666 погулять | perl -pe "$_=reverse;;s/\d{3}\K/ /g;;$_=reverse"

0
Эксперт Python
5435 / 3858 / 1215
Регистрация: 28.10.2013
Сообщений: 9,553
Записей в блоге: 1
09.12.2015, 23:25 8
Цитата Сообщение от sov44 Посмотреть сообщение
Необходимо значение %%~za типа 12345678 привести к типу 12 345 678
Windows Batch file
1
powershell -nop -exec bypass "'{0:#,#}' -f 1234567890"
0
3461 / 1999 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
13.12.2015, 17:55 9
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Цитата Сообщение от sov44 Посмотреть сообщение
Необходимо значение %%~za типа 12345678 привести к типу 12 345 678
.




Проще использовать не "%%~za", а обработку вывода команды "DIR", в котором уже заложено такое форматирование размера файла:


Код
@echo off

set "file=C:\Test\test.txt"

for /f "tokens=3" %%а in ('dir/a-d "%file%"^| findstr/brc:"  *1"') do set x=%%а& call echo %%x:я= %%

pause>nul

.



Код проверялся в русскоязычной Wiidows 8.

Интересно, что в качестве разделителя групп разрядов в выводе команды "DIR" используется пробельный символ "0xA0", который в тексте файла в кодировке OEM-866 является буквой "я". Поэтому при сохранении пакетного файла с вышеприведённым кодом в этой кодировке символ "я" нужно вставлять на своё место в уже сохранённый файл и пересохранять без изменения кодировки.





Цитата Сообщение от s3r10rus Посмотреть сообщение
А можно ли сделать так, чтобы три последних символа не писались и тогда вместо байт считать в килобайтах?


Будет получаться полная ерунда (см. сообщение от b0gus), но просто как операцию по удалению трёх последних цифр и разделителя (или всех цифр, если число менее, чем четырёхзначное) осуществить это несложно, если в конец кода от Dragokas добавить следующие строки:


Код
 
set ret=%ret:~,-4%
if "%ret%" equ "" set ret=0
echo -%ret%-

pause

.
2
5 / 5 / 0
Регистрация: 24.11.2015
Сообщений: 218
31.10.2024, 22:58 10
какая то ошибка на странице не могу код от ComSpec посмотреть..
после
Цитата Сообщение от ComSpec Посмотреть сообщение
Проще использовать не "%%~za", а обработку вывода команды "DIR", в котором уже заложено такое форматирование размера файла:
показывает это
Код
@echo off
 
set "file=C:\Test\test.txt"
 
for /f "tokens=3" %%



		


		
		
		
		






		
		
			

				
					
						Последний раз редактировалось ComSpec; 02.01.2016 в 10:59.
					
					
						Причина: техническая правка.
0
6302 / 2144 / 337
Регистрация: 10.12.2013
Сообщений: 7,387
31.10.2024, 23:50 11
Цитата Сообщение от ComSpec Посмотреть сообщение
Проще использовать не "%%~za", а обработку вывода команды "DIR"
проще пользоваться настоящими инструментами


PowerShell
1
"{0:N0}" -f 1234580123456787654326
output
1 234 580 123 456 787 654 326
0
31.10.2024, 23:50
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2024, 23:50
Помогаю со студенческими работами здесь

Вывод размера файла
Как в этом случае размер файла вывести в лабел? В ShowMessage выводит нормально. var FS:...

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

Вывод размера файла с плавающей точкой
Как вывести размер файла с плавающей точкой в Label? Я определяю размер файла FileInfo FileLength...

Вывод данных и ячейки бд с разделителями
Привет. Подскажите, пожалуйста, решение: В бд есть строка и водной из ячеек есть содержимое в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru