Я новичок в создании пакетных файлов и столкнулся с проблемой. Мой план состоит в том, чтобы сравнить размер (в байте) файла (неизвестное имя файла, но с фиксированным расширением) с несколькими «maxfilesizes» и делать разные вещи в зависимости от размера файла.Пакет - множественные проверки размера файла
@echo off
for /F %%a in ('dir /b *.bin') do set file=%%~na
:BEGIN
for %%X in (%file%.bin) do if %%~zX LSS 1500000000 goto 15MB
for %%X in (%file%.bin) do if %%~zX LSS 5000000000 goto 50MB
for %%X in (%file%.bin) do if %%~zX LSS 10000000000 goto 100MB
for %%X in (%file%.bin) do if %%~zX LSS 15000000000 goto 150MB
goto Error
:15MB
echo Less than 1500000000b. Do stuff here.. 15MB.
goto TheEnd
:50MB
echo Less than 5000000000b. Do stuff here.. 50MB.
goto TheEnd
:100MB
echo Less than 10000000000b. Do stuff here.. 100MB.
goto TheEnd
:150MB
echo Less than 15000000000b. Do stuff here.. 150MB.
goto TheEnd
:Error
echo File size greater than 14GB. Aborting..
:TheEnd
echo All done.
pause
Я проверил эту партию с файлом, который ~ 8.000.000.000 байт так «: 100MB» должна быть запущена, но это не так. Вместо этого я всегда получаю «Размер файла более 14 ГБ. Aborting .. ' Пожалуйста, имейте в виду, что я новичок, поэтому вышеупомянутая партия, вероятно, не самая эффективная. Любая помощь будет очень признательна.
EDIT: @Aacini большое вам спасибо, я только что проверил ваш код с некоторыми из моих файлов, и он делает именно то, что я хотел.
[...], но я думаю, вы должны пересмотреть номера, которые вы используете в байтах -> преобразование MB ...
И это не преобразования. Я использую их только для goto, потому что, если размер файлов меньше 1500000000 байт, я хочу, чтобы файл был разделен на 15 Мб частей (эхо-файлы будут заменены командами). Следовательно, -> goto 15MB. Надеюсь, что это очистит. Еще раз спасибо!
hm, проверьте свои конверсии с байтов на мегабайты и гигабайты. –
Проблема заключается в том, что вы используете команду for. Он просматривает содержимое файла, а не сам файл. – Monacraft
Энди Т: Я не думаю, что с байтами что-то не так. @Monacraft: Когда я делаю - для %% X in (% file% .bin) делает echo %% ~ zX bytes - он правильно эхо-байты. Что именно ты имеешь ввиду? Как изменить команду for, чтобы она просматривала сам файл? – user3033137