4
wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /Format:Textvaluelist > Output.txt  

批量使用上述命令,我得到输出,

FreePhysicalMemory=1140860
TotalVisibleMemorySize=2095492

我想在等号 (=) 之后添加一个空格,这样它可能看起来像;

FreePhysicalMemory= 1140860
TotalVisibleMemorySize= 2095492

我正在尝试以下但收到错误:命令的语法不正确

For /F "tokens=1 delims==" %%A in ('wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /Format:Textvaluelist') do 
echo %%A %%B > Output.txt  

或者有没有其他方法可以使用批处理获得所需格式的输出?

4

2 回答 2

3

Wmic 可能是一个奇怪的野兽。这适用于 Windows 8 32 位。

需要额外的代码来删除尾随的回车。

@echo off
setlocal enabledelayedexpansion
(For /F "tokens=1,* delims==" %%A in ('"wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /value |find "M" "') do (
set "line=%%A= %%B"
set "line=!line:~0,-1!"
echo !line!
))>output.txt
于 2013-10-19T05:05:08.790 回答
2

首先,您会考虑将WMIC输出编码从Unicodeto转换ANSI为省略 unicode 字符(如空 Echoes),一个简单的技巧是使用FIND/FINDSTR命令过滤输出,在应用输出过滤器后,您只需要读取输出FOR /F使用所需的tokens值和delims分隔符拆分字符串。

这是代码:

@Echo OFF

(For /F "Tokens=1,* Delims==" %%A in (
    'wmic OS get FreePhysicalMemory^,TotalVisibleMemorySize /Format:list ^| FINDSTR "[0-9]"'
)DO (
    Echo %%A= %%B
))>"File.txt"

Pause&Exit
于 2013-10-19T06:09:09.067 回答