Я пытаюсь создать командный файл для извлечения общего размера и свободного места на диске C: \ серверов (локально запускаемый скрипт). Мне также нужно, чтобы вывод был легко читаемым, чтобы байты не работали, поэтому у меня все в порядке с командной строкой, которая создает временный файл .vbs.
Кажется, что следующее может сработать, но форматирование / математика неверны.
setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%
Вышеприведенные команды также показывают только свободное пространство ... Мне бы тоже хотелось иметь общий размер ... Интересно, может ли быть лучше использовать следующую команду для извлечения информации:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
Также обратите внимание, что я хочу, чтобы это можно было копировать / вставлять непосредственно в командную строку (не командный файл - принудительные требования). Я уже удалил "%%" из кода выше.
Примечание. Должен запускаться на сервере Server 2003+ (таким образом, отсутствует Powershell, а также любые сторонние утилиты).
источник
Ответы:
В соответствии с предложением « не пакетный файл - принудительные требования
cmd
» может помочь следующая строка:Выход :
источник
Я понимаю, что вы сейчас выглядите как VBS, но PowerShell может сделать это очень легко:
Первая строка получает информацию о диске из WMI (в данном примере это просто C:) и выбирает только свободное пространство и общий размер.
В следующих двух строках запишите размеры свободного пространства и общего объема в консоль, отформатированные в ГБ, с отсеченными фракциями.
Пример вывода (как есть):
источник
В пакетном файле вы можете получить размер диска в ГБ указанного диска с помощью сценария DiskPart. В этом примере я устанавливаю определенный индекс диска в соответствии с названием его модели (при условии, что на компьютере есть только один такой). Измените строку « SATA Disk » в соответствии с моделью вашего жесткого диска. Вы можете получить название модели, выполнив команду " wmic diskdrive get Model, Index " в cmd.
Конечно, вы можете использовать другое свойство диска в команде wmic - типа wmic diskdrive get /? чтобы получить список всех свойств диска, которые вы можете использовать.
источник
Если вам просто нужно проверить, достаточно ли на диске свободного места (например, для установки или копирования чего-либо), вы можете попробовать запрос wmic следующим образом:
wmic LogicalDisk where "DeviceID='c:' and FreeSpace > 10737418240" get DeviceID 2>&1 ^ | find /i "c:" >nul || (echo not enough space&exit 1)
это прервет выполнение пакетного файла, если на C осталось менее 10 Гб:
источник
Разделите на 1024, чтобы получить кибайты (2 ^ 10). Разделите на 1024 x 1024, чтобы получить Мибайты (2 ^ 20). Разделите на 1024 x 1024 x 1024, чтобы получить Gibytes (2 ^ 30).
Windows называет эти единицы килобайтами, мегабайтами и гигабайтами по историческим причинам. Я думаю, что мой корпус правильный.
Так что меняйте свои суммы.
источник