Text garble in batch script for wmic command

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

I'm trying to run the batch script to acquired the basic computer information like CPU,RAM and active Network card.Here is my code

@Echo OFF  set newline=^& echo.  echo Manufacturer Information> test1.txt  systeminfo|findstr /c:"Host Name" /c:"OS Name" /c:"System Model:" /c:"System Type:" /c:"Total Physical Memory:" >>test1.txt  echo CPU Information:>> test1.txt  wmic cpu get Name /Format:list >> test1.txt  echo %newline%Process Information:>> test1.txt  wmic computersystem get NumberofProcessors /Format:list >> test1.txt  echo %newline%NIC Information:>> test1.txt  wmic nicconfig where "IPEnabled=TRUE" get ipaddress, macaddress,defaultipgateway /format:list >>test1.txt

Output looks:

Manufacturer Information Host Name: DK-IT OS Name:
Microsoft Windows 8.1 Single Language System Model:
Inspiron 7537 System Type: x64-based PC Total Physical Memory: 6,043 MB CPU Information:

 N a m e = I n t e l ( R )   C o r e ( T M )   i 5 - 4 2 0 0 U   C P U   @   1 . 6 0 G H z     Process Information:    N u m b e r O f P r o c e s s o r s = 1     NIC Information:    D e f a u l t I P G a t e w a y = { " 1 0 . 5 . 1 . 1 " }     I P A d d r e s s = { " 1 0 . 5 . 4 . 5 4 " , " f e 8 0 : : 1 0 e b : 1 d

2 d : 2 0 8 8 : 8 b a 1 " } M A C A d d r e s s = 0 C : 8 B : F D : 9 C : 8 0 : 4 7

 D e f a u l t I P G a t e w a y =     I P A d d r e s s = { " 1 9 2 . 1 6 8 . 1 9 9 . 1 " }     M A C A d d r e s s = 0 0 : 5 0 : 5 6 :

C 0 : 0 0 : 0 1

D e f a u l t I P G a t e w a y = I P A d d r e s s = { " 1 9 2 . 1 6 8 . 1 9 0 . 1 " , " f e 8 0 : : 6 4 b 2 : 2 a a a : e f 6 4 : f a 9 a " } M A C A d d r e s s = 0 0 : 5 0 : 5 6 : C 0 : 0 0 : 0 8

Can someone help to modify the view of batch file output?

回答1:

Your problem is SYSTEMINFO produces ANSII output (as do most commands), but WMIC produces Unicode output. The two do not mix well.

Below are three solutions that all produce ANSII output.

1) Pipe the WMIC output to MORE

MORE converts Unicode to ANSII. I also pipe that result to FINDSTR to eliminate blank lines. The only problem with this solution is that a quirk with the conversions causes the WMIC output to have an extra carriage return at the end of each line ( instead of )

@echo OFF >test1.txt (   echo Manufacturer Information:   systeminfo|findstr /c:"Host Name" /c:"OS Name" /c:"System Model:" /c:"System Type:" /c:"Total Physical Memory:"    echo(   echo CPU Information:   wmic cpu get Name /Format:list | more | findstr .   wmic computersystem get NumberofProcessors /Format:list | more | findstr .    echo(   echo NIC Information:   wmic nicconfig where IPEnabled=TRUE get ipaddress, macaddress,defaultipgateway /format:list | more | findstr . )


------------------------------

The remaining solutions are all properly formatted, without any extra

2) Write WMIC output to a temp file, followed by TYPE

The temp file is in Unicode format, and TYPE properly converts the Unicode to ANSII. I still pipe the result to FINDSTR to eliminate blank lines.

@echo OFF >test2.txt (   echo Manufacturer Information:   systeminfo|findstr /c:"Host Name" /c:"OS Name" /c:"System Model:" /c:"System Type:" /c:"Total Physical Memory:"    echo(   echo CPU Information:   call :wmic cpu get Name /Format:list   call :wmic computersystem get NumberofProcessors /Format:list    echo(   echo NIC Information:   call :        
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!