Script de lote do Windows para obter detalhes do espaço em disco

0

Preciso receber o alerta de e-mail para detalhes do espaço em disco. Eu encontrei este script no nosso fórum. Quando executo esse script no prompt de comando, ele gera a saída conforme mencionado abaixo. Mas quando eu executo isso salvando-o como um arquivo de lote, ele não funciona.

Alguém pode me ajudar como fazer isso como um arquivo em lotes ou qualquer outro método para obter os detalhes do espaço em disco usando o arquivo em lotes, para que eu pudesse agendar no Agendador de Tarefas.

Script

(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

Saída

C: free=79,11 GiB size=111,45 GiB
D: free=929,47 GiB size=931,51 GiB

    
por Dhanu DBA 31.07.2015 / 09:56

1 resposta

1

Duplique o sinal % indicando as variáveis de controle de loop: %a to %%a , %b to %%b e assim por diante:

@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

ou, com menos gravações de disco na pasta %temp% e com a única chamada 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"

Recursos (leitura adicional): Um índice A-Z da linha de comando do Windows CMD

    
por 31.07.2015 / 10:59

Tags