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

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

Ответить
Настройки темы
CMD/BAT - if в батнике по размеру файла больше 4 гигабайт

Аватара для R.i.m.s.k.y.

Ветеран


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


Конфигурация

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


есть батник
нужно папки и файлы больше 10 гиг (для простоты гиг/мег/килобайт считаю десятичным а не 1024) передавать на обработку в секцию BIG, файлы от 600метров до 10 гиг в SMALL, файлы меньше 600 метров - VERYSMALL
условие на 1000000 это для атрибутов папки, а то размер для папки возвращается ненулевой в зависимости от атрибутов
батник выводит имя файла, размер и секцию при выполнении (чтобы видно было в какой раздел он попал)

передаю батнику параметром файл размером 12 гиг, но батник выполняет секцию small - происходит переполнение переменной SIZEFILE>2^32 и отбрасываются последние знаки, хотя должен идти в секцию BIG

как выкрутиться?

Код: Выделить весь код
@SET FILE=%2
@SET SIZEFILE=%~z2
@SET FOLDER=%3
@SET FILENAME=%1

@echo %FILE%
@rem @rd %FOLDER%
md %FILENAME%

IF %SIZEFILE% LEQ 1000000 (goto big)
IF %SIZEFILE% LEQ 600000001 (goto verysmall)
IF %SIZEFILE% LEQ 10000000001 (goto small)
goto big
                 
                 
:big
@echo %SIZEFILE% Folder or BIG
...
goto end

:small
@echo %SIZEFILE% small
...
goto end

:verysmall
@echo %SIZEFILE% verysmall
...
goto end

:end

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 11:41, 31-12-2013

 

Старожил


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

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


откусывай от размера 3 или 6 последних знаков

Отправлено: 11:48, 31-12-2013 | #2



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

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


Аватара для R.i.m.s.k.y.

Ветеран


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

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


как?
любые действия с SIZEFILE в которой лежит размер файла больше 4 гиг дают ошибку
я бы все числа поделил на 1000, но SIZEFILE 12гигового файла не дается
Код: Выделить весь код
Неверное число. Числа ограничены 32 битами точности.

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 11:53, 31-12-2013 | #3


Аватара для R.i.m.s.k.y.

Ветеран


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

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


ларчик просто открывался
Код: Выделить весь код
set /a %SIZEFILE:~0,-3%
откусывает три последних символа, т.е. делит на 1000

может еще подскажете как можифицировать батник чтобы вычислять размер папок и обрабатывать их наравне с файлами по секциям big/small/verysmall

Код: Выделить весь код
@SET FILE=%2
@SET SIZEFILE=%~z2
@SET SIZEFILEKb=%SIZEFILE:~0,-3%
@SET SIZE1=1000
@SET SIZE2=600001
@SET SIZE3=10000001
@SET FOLDER=%3
@SET FILENAME=%1

@echo %FILE%
@rem @rd %FOLDER%
md %FILENAME%

IF %SIZEFILEKb% LEQ %SIZE1% (goto big)
IF %SIZEFILEKb% LEQ %SIZE2% (goto verysmall)
IF %SIZEFILEKb% LEQ %SIZE3% (goto small)
goto big

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 31-12-2013 в 12:16.


Отправлено: 12:10, 31-12-2013 | #4


Старожил


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

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


Код: Выделить весь код
dir /a-d/-c/s
см. предпоследнюю строку вывода

Отправлено: 12:37, 31-12-2013 | #5


Аватара для R.i.m.s.k.y.

Ветеран


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

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


kiripanda, и как из команды dir в переменную занести размер папки?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 13:02, 31-12-2013 | #6


Старожил


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

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


Код: Выделить весь код
for /f "tokens=1-3" %%x in ('dir /a-d/-c/s 2^>nul ^|findstr /c:"файлов"') do set size=%%z
echo %size% Bytes

Последний раз редактировалось kiripanda, 31-12-2013 в 13:34.

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

Отправлено: 13:24, 31-12-2013 | #7


Аватара для R.i.m.s.k.y.

Ветеран


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

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


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

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 13:35, 31-12-2013 | #8


Старожил


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

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


Win Rus? Батник в cp866?
для Eng нужно
Код: Выделить весь код
findstr /c:"File(s)"
_____________________________________________

теперь как в предыдущем случае откусывай от %size% 3-6 знаков

Отправлено: 13:38, 31-12-2013 | #9


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата kiripanda:
Win Rus? Батник в cp866? »
да
да
______
эта команда для файлов тоже сработает?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 13:44, 31-12-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как удалять файлы по размеру из командного файла? njg Скриптовые языки администрирования Windows 8 28-08-2017 17:33
Любой язык - Скрипт для распределения файлов по папкам кучками по n-ому размеру DmitryAnatolich Скриптовые языки администрирования Windows 9 06-05-2013 15:20
CMD/BAT - Переменная в батнике, зависимая от имени файла russur Скриптовые языки администрирования Windows 14 25-05-2012 20:45
Прочие - [решено] Сравнение папок по размеру Morpheus Программное обеспечение Windows 14 06-12-2011 12:37
CMD/BAT - [решено] В батнике не получается получить строку из файла Karlson Скриптовые языки администрирования Windows 8 11-10-2011 17:09




 
Переход