抱歉,标题太长了,我很难用一行来解释它。
我有一个简单的脚本,它可以获取远程系统状态,并返回包含总内存的行,并将其输出到文件:
systeminfo /s:HOSTNAME | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"
我有一个文本文件,里面有我想要检查的每台 PC 的所有主机名。我怎样才能在文本文件中的每台 PC 上运行相同的命令,而不必制作重复同一行的批处理文件?
此外,如果可能的话,还可以在日志中包含主机名。
谢谢
更新:我已经想到了这个,我很快就会测试它。
for /F "tokens=*" %%A in ("D:\All Pcs\pclist.txt") do (
echo.
echo %%A >> "D:\All PCs\RAM_LOG.txt"
systeminfo /s:%%A | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"
)
答案1
要获取总内存,请使用 wmic 查询 - 它更快。
例如:
...
wmic /NODE:"%%A" /APPEND:"D:\All PCs\RAM_LOG.txt" MEMPHYSICAL get name, TotalPhysicalMemory
但你不需要批处理文件,更好的方法是使用以逗号分隔的主机名文件
wmic /NODE:@"D:\All Pcs\pclist.txt" /APPEND:"D:\All PCs\RAM_LOG.txt" computersystem get name, TotalPhysicalMemory
您还可以添加全局选项 /FAILFAST (连接远程机器的超时)
WMIC /FAILFAST:1000 ...
答案2
我通过使用以下方法成功地做到了这一点:
for /F "tokens=*" %%A in ("D:\All Pcs\pclist.txt") do (
echo.
echo %%A >> "D:\All PCs\RAM_LOG.txt"
systeminfo /s:%%A | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"
)
其中 pclist.txt 是要扫描的所有主机名的列表。