编辑WMIC输出格式

时间:2013-10-19 03:29:56

标签: batch-file

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  

或者是否有其他方法可以使用批处理以所需格式获取输出?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

首先,您会考虑将WMIC输出编码从Unicode转换为ANSI以省略unicode字符(如空回声),执行此操作的一个简单方法是使用FIND/FINDSTR命令,在应用输出过滤器之后,您只需要使用FOR /F读取输出,以使用所需的tokens值和delims分隔符来分割字符串。< / p>

以下是代码:

@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