2013-10-19 151 views
2
wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /Format:Textvaluelist > Output.txt 

在间歇使用上述命令,我得到输出,编辑WMIC输出格式

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 

或有任何其他方式来获得使用批处理中要求的格式输出?

回答

1

首先你会考虑到WMIC输出编码从Unicode转换为ANSI到ommit Unicode字符(如空回声),一个简单的技巧来做到这一点是过滤的输出与FIND/FINDSTR指令(S),应用后输出过滤器,您只需使用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 
+1

@ Elektro..its working in cmd .. !!。但是当我重定向输出'Echo %% A = %% B> Output.txt' ... Output.txt文件只有'TotalVisibleMemorySize = 2095492' ** FreePhysicalMemory **。 – Sunny

+0

当然,输出包含两行,但您试图重定向一个覆盖文本文件,我编辑了代码,让您了解如何重定向两行。 PS:原谅我的英语口语 – ElektroStudios

+1

@ Elektro..Now其工作完全像你英语..! :)..谢谢..! – Sunny

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 
+0

它的工作完美Foxi ..! :) – Sunny