用于获取磁盘空间详细信息的 Windows 批处理脚本

用于获取磁盘空间详细信息的 Windows 批处理脚本

我需要获取有关磁盘空间详细信息的邮件警报。我在我们的论坛中找到了此脚本。当我在命令提示符中运行此脚本时,它会生成如下所示的输出。但是当我通过将其保存为批处理文件来运行它时,它不起作用。

有人能帮助我如何将其制作成批处理文件或使用任何其他方法使用批处理文件获取磁盘空间详细信息,以便我可以在任务计划程序中进行安排。

脚本

(对于 /f “tokens=1-3” %a 在('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V “Name”')中执行 @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 GiB 大小=111,45 GiB
D:可用=929,47 GiB 大小=931,51 GiB

答案1

%将表示循环控制变量的符号加倍: %ato %%a%bto%%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"

资源(进一步阅读):Windows CMD 命令行的 AZ 索引

相关内容