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

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

скрипт

(для /f "токены = 1-3"% a in ('WMIC LOGICALDISK ПОЛУЧИТ FreeSpace ^, Имя ^, Размер ^ | FINDSTR /I /V "Имя"') do @echo wsh.echo "% b" ^ & "free =" ^ & FormatNumber ^ (cdbl ^ (% a ^) /1024/1024/1024, 2 ^) ^ & "GB" ^ & "size =" ^ & FormatNumber ^ (cdbl ^ (% c ^) /1024/1024/1024, 2 ^) ^ & "GB">% temp%\tmp.vbs & @if not "% c" == "" @echo (& @cscript //nologo% temp%\tmp.vbs & del% temp%\tmp.vbs)> E:\ Monitoring_scripts\ log\ Disk_status.txt

Выход

C: свободный = 79,11 ГиБ размер = 111,45 ГиБ
D: свободный = 929,47 ГиБ размер = 931,51 ГиБ

1 ответ1

1

Удвойте знак % обозначающий переменные управления циклами: от %a до %%a , от %b до %%b и так далее:

@ECHO OFF
SETLOCAL enableextensions
(for /f "tokens=1-3" %%a in ('
  WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"
  ') do (
    echo wsh.echo "%%b" ^& " free=" ^& FormatNumber^(cdbl^(%%a^)/1024/1024/1024, 2^)^& " GB"^& " size=" ^& FormatNumber^(cdbl^(%%c^)/1024/1024/1024, 2^)^& " GB" > "%temp%\tmp.vbs"
    if not "%%c"=="" (
      echo( 
      cscript //nologo "%temp%\tmp.vbs"
      del "%temp%\tmp.vbs"
    )
  )
) > E:\monitoring_scripts\log\Disk_status.txt

или с меньшим количеством записей на диск в папку %temp% и с единственным cscript :

@ECHO OFF
SETLOCAL enableextensions
(for /f "tokens=1-3" %%a in ('
  WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"
  ') do (
    if not "%%c"=="" (
      echo wsh.echo vbNewLine ^& "%%b" ^& " free=" ^& FormatNumber^(cdbl^(%%a^)/1024/1024/1024, 2^)^& " GB"^& " size=" ^& FormatNumber^(cdbl^(%%c^)/1024/1024/1024, 2^)^& " GB"
    )
  )
) > "%temp%\tmp.vbs"
cscript //nologo "%temp%\tmp.vbs" > E:\monitoring_scripts\log\Disk_status.txt
del "%temp%\tmp.vbs"

Ресурсы (дальнейшее чтение): индекс AZ командной строки Windows CMD

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .