Проверьте свободное место на диске с помощью пакетных команд
Есть ли способ проверить свободное место на жестком диске в пакетном скрипте?
Я бы предпочел не использовать сторонние приложения, так как мне нужно заполнить много форм, и в этом случае я думаю, что сам напишу небольшое приложение.
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