尝试了以下内容的变体,并附加了更多代码,这里有什么问题?谢谢!
@echo off
goto checkmemorystatus
:checkmemorystatus
for /f "skip=1" %%p in ('wmic os get freephysicalmemory') do (
set m=%%p
if %m% LSS <threshold> (start echo FREE RAM ALERT: %m% & PING 1.1.1.1 -n 1 -w 60000 >NUL)
goto checkmemorystatus
)
答案 0 :(得分:1)
无需延迟扩展(因为不需要额外的变量):
@echo off
:checkmemorystatus
PING localhost -n 2 -w 60000 >NUL
for /f "skip=1" %%p in ('wmic os get freephysicalmemory') do (
if %%p leq 700000 ( echo FREE RAM ALERT: %%p ) else (echo FREE RAM ok : %%p)
goto checkmemorystatus
)
(代码基本上来自mihai_mandis)
wmic为你提供了比你想要的更多的线条。您已使用skip
忽略了第一行。上面的代码在一次运行后中断了for循环并忽略了以下行。 (我为测试目的添加了“Free RAM ok” - 你可能想删除它)
答案 1 :(得分:0)
在脚本开头设置延迟扩展:
setlocal EnableDelayedExpansion
这将允许您以格式!var_name!
格式访问for循环中的变量2.不要在块内使用goto语句。这将导致休息。
@echo off
setlocal EnableDelayedExpansion
:checkmemorystatus
for /f "skip=1" %%p in ('wmic os get freephysicalmemory') do (
set mm=%%p
if !mm! LSS <threshold> (
start echo FREE RAM ALERT: !mm!
PING localhost -n 1 -w 60000 >NUL
)
)
goto :checkmemorystatus