Проверьте свободное место на диске с помощью пакетных команд

Есть ли способ проверить свободное место на жестком диске в пакетном скрипте?

Я бы предпочел не использовать сторонние приложения, так как мне нужно заполнить много форм, и в этом случае я думаю, что сам напишу небольшое приложение.

2 ответа

Самый простой способ получить доступ к свободному месту на диске - использовать WMI. При попытке разобрать вывод dir Вы получаете все виды забавных проблем, по крайней мере, с версиями Windows на других языках. Ты можешь использовать wmic запросить свободное место на диске:

wmic logicaldisk where "DeviceID='C:'" get FreeSpace

Это выведет что-то вроде

FreeSpace
197890965504

Вы можете заставить это в одну строку, добавив /format:value переключатель:

> wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value

FreeSpace=197890965504

Там есть несколько пустых строк (около трех или четырех), которые плохо поддаются обработке. К счастью, for Команда может удалить их для нас, когда мы делаем токенизацию:

for /f "usebackq delims== tokens=2" %x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%x

Здесь хорошо то, что, поскольку мы используем только второй токен, все пустые строки (у которых нет второго токена) игнорируются.

Не забудьте удвоить % признаки при использовании этого в командном файле:

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x

Теперь вы можете использовать свободное место, которое хранится в переменной окружения %FreeSpace%,

Вот простой скрипт для проверки вашего c-диска

echo C-drive Свободное пространство >> CDrive.txt

dir c: \ | find / i "bytes free" >> CDrive.txt

Другие вопросы по тегам