Назад | Перейти на главную страницу

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

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

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

Самый простой способ надежно получить свободное место на диске - использовать 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 Free Space >> CDrive.txt
dir c:\|find /i "bytes free" >> CDrive.txt