|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - if в батнике по размеру файла больше 4 гигабайт |
|
CMD/BAT - if в батнике по размеру файла больше 4 гигабайт
|
Ветеран Сообщения: 1640 |
есть батник
нужно папки и файлы больше 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:58, 31-12-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1640
|
Профиль | Отправить 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\" @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 @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
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y., самый правильный путь — перейти к использованию WSH или PoSH.
|
Отправлено: 18:30, 31-12-2013 | #13 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|