Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Командная строка, место на диске


Автор: underchronos 28.3.2011, 20:06
Что-то не догоняю я... Windows XP. Мне необходимо на диске определять сколько место у меня есть. Утилиты FreeDiskв ХРюше  нет, но и бог с ней. Я определяю размер так:

Код

For /F "UseBackQ" %%i In (`WMIC LogicalDisk Where Name^="D:" GET FreeSpace`) Do Set FreeSpace=%%i


Размер-то я получаю, в байтах... Но мне нужно сравнить его с размером файлов порядка 24 ГБ... Но у CMD оказывается беда с арифметикой, когда данные больше ~4ГБ в байтах. Операторы сравнения тоже не работают. Беда, как можно это обойти.

Отказаться от cmd и перейти на скриптовые языки не предлагать.

Автор: 01MDM 28.3.2011, 21:03
underchronos

Цитата

Операторы сравнения тоже не работают.


Сравнивай как строку одинаковой длины:
Код

@echo off
setlocal

set "wmic=wmic logicaldisk where name="d:" get freespace"
for /f %%i in (' "%wmic%" ') do set "free=%%i"

set "free=000000000000%free%"
set "test=00000000000025769803776"

if "%free:~-12%" gtr "%test:~-12%" (echo greater) else (echo not greater)


Автор: underchronos 29.3.2011, 23:04
01MDM, знаете, спасибо. 

Хотя все-таки я наконец откопал windows server 2003 32bit и скопировал себе оттуда freedisk, который такую задачу решает просто и элегантно.

Вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)