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

Компьютерный форум 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 | Цитировать


с
Код: Выделить весь код
dir /a-d/-c/s %2
вроде работает. Но передавать нужно полный путь, а-то посчитает сумму размеров всех одноимённых файлов

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



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

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


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

Ветеран


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

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


R.i.m.s.k.y., эта команда сносит моцк батнику: вместе с ним начинает архивироваться не сам файл, а все что в подпапке t:\1

основной вызывающий батник
Код: Выделить весь код
cmd /C www-.cmd 0091 "t:\1\папка с файлами" "t:\1\"
cmd /C www-.cmd 0092 "t:\1\большой файл 12 гигов.ext" "t:\1\"
www архивирует как надо но папки архивирует как BIG даже если там пара метров
Код: Выделить весь код
@rem русский СР866
@rem echo off

@echo.
@CD /D %3

@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%
@rd /S /Q %FILENAME% > nul
@md %FILENAME%

IF %SIZEFILEKb% LEQ %SIZE1% (goto big)
IF %SIZEFILEKb% LEQ %SIZE2% (goto verysmall)
IF %SIZEFILEKb% LEQ %SIZE3% (goto small)
goto big
                 
@rem if %SIZEFILE% GEQ 10000000001 (goto big)
@rem if %SIZEFILE% GEQ 600000001 (goto small)
@rem if %SIZEFILE% GEQ 20000001 (goto verysmall)
@rem goto big

:big
@echo %SIZEFILEKb% KB BIG
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v200m %FILENAME%\%FILENAME%.rar %FILE%
goto end

:small
@echo %SIZEFILEKb% KB small
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v50m %FILENAME%\%FILENAME%.rar %FILE%
goto end

:verysmall
@echo %SIZEFILEKb% KB verysmall
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v3m %FILENAME%\%FILENAME%.rar %FILE%
goto end

:end
www-.cmd учитывает размер папки но в архив начинает загонять все что лежит в t:\1
Код: Выделить весь код
@rem русский СР866
@rem echo off
@echo.
@CD /D %3

for /f "tokens=1-3" %%x in ('dir /a-d/-c/s %2 2^>nul ^|findstr /c:"файлов"') do set size=%%z
@SET SIZEFILEKb=%size:~0,-3%

@SET SIZE1=1000
@SET SIZE2=600001
@SET SIZE3=10000001
@SET FOLDER=%3
@SET FILENAME=%1

@echo %FILE%
@rem @rd %FOLDER%
@rd /S /Q %FILENAME% > nul
@md %FILENAME%

IF %SIZEFILEKb% LEQ %SIZE1% (goto big)
IF %SIZEFILEKb% LEQ %SIZE2% (goto verysmall)
IF %SIZEFILEKb% LEQ %SIZE3% (goto small)
goto big
                 
@rem if %SIZEFILE% GEQ 10000000001 (goto big)
@rem if %SIZEFILE% GEQ 600000001 (goto small)
@rem if %SIZEFILE% GEQ 20000001 (goto verysmall)
@rem goto big

:big
@echo %SIZEFILEKb% KB BIG
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v200m %FILENAME%\%FILENAME%.rar %FILE%
goto end

:small
@echo %SIZEFILEKb% KB small
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v50m %FILENAME%\%FILENAME%.rar %FILE%
goto end

:verysmall
@echo %SIZEFILEKb% KB verysmall
@"C:\Program Files\WinRAR\WinRAR.exe" m -m1 -r -t -rv25%% -ep1 -v3m - %FILENAME%\%FILENAME%.rar %FILE%
goto end

:end

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


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


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


Ветеран


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

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


R.i.m.s.k.y., самый правильный путь — перейти к использованию WSH или PoSH.

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



Компьютерный форум 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




 
Переход