Войти

Показать полную графическую версию : [решено] как можно проверить, сколько свободного места осталось на %systemdrive%?


AnGI_Burn
10-01-2008, 13:26
Подскажите, пожалуйста, как можно проверить, сколько свободного места осталось на %systemdrive% и, допустим, если больше 10 гигов, то выполнить какое-либо действие? На батнике такое возможно?

vserd
11-01-2008, 00:36
На батнике такое возможно? »
Да. Dir %systemdrive%
оттуда можно вытащить свободное место.
Посмотрите на forum.ru-board.ru в программах тему по bat/cmd и связанные темы из шапки. Там такие задания встречались.

Debugger
11-01-2008, 08:29
Посмотрите на forum.ru-board.ru »
Точнее, forum.ru-board.com :)

Vadikan
11-01-2008, 10:03
vserd, Debugger
Очень патриотично :)

Имхо, проще будет
fsutil volume diskfree %systemdrive%

Ну а дальше там уже скомбинировать с FOR... IN. У меня с этим плохо, но если что - CMD/BAT - нужна помощь в написании *.bat файлов (http://forum.oszone.net/thread-56001.html)

vserd
11-01-2008, 10:25
Очень патриотично »
Звиняйте батьку :)), советую те инструменты которыми пользуюсь и которые помогли. А где они расположены, на "дружественных" или "не дружественных" сайтах мне фиолетово.

Debugger, именно, видно вчерась мозги выключались, или "один пишем, два в уме" :))))

AnGI_Burn
11-01-2008, 14:48
Вот таким вот образом можно выделить нужный элемент:

for /F "Tokens=6 Delims= " %%a in ('fsutil volume diskfree %systemdrive%') do echo Free: %%a

но вот в конце значения переменной %%a болтаются 2 лишних символа... как их можно убрать?

vserd
11-01-2008, 15:11
AnGI_Burn,
подробно смотри
cmd /k help set

кратко
Set aa=1234567
echo %Aa% A=%aa:~0,-2%
остальные вопросы по bat/cmd задавай в соответствующей теме.

Только учти что на FAT32 fsutil volume diskfree не работает.

AnGI_Burn
11-01-2008, 16:10
Ок! Тогда отвечу на свой же вопрос...
Как можно проверить, сколько свободного места осталось на %systemdrive% и, допустим, если больше n гигов, то выполнить какое-либо действие?
Вот такой батник получился... если на диске больше 5 гигабайт, то выполняется какое-то действие...

@echo off
Set SPACE=5368709120
for /F "Tokens=6 Delims= " %%a in ('fsutil volume diskfree %systemdrive%') do (
echo Free space: %%a
Set fr=%%a
)
if %fr% GTR %SPACE% goto DEISTVIE
exit

:DEISTVIE
echo Doing something...

Работает покрайней мере на NTFS :)

SirSmoker
14-09-2009, 18:32
AnGI_Burn,
Странно что это у тебя работает.
Т.к. в bat есть ограничение - числа только 32 bit. Т.е. нельзя сравнивать числа больше 4GB.
И строка
if %fr% GTR %SPACE% goto
ошибок выдавать не будет, но и сравнивать правильно тоже не будет.




© OSzone.net 2001-2012