2017-05-19 2 views
0

私は、C++を使ってビルドされたサービスから実行され、ユニコードを使用して構築されていないスクリプトを持っています。このプログラムは以下のスクリプトを実行し、不思議なことに、wmic qfeリスト行を実行しているスクリプトの出力がユニコードとして出力されているようです。下のサンプル出力。ここでスクリプトからのasciiとunicodeの混在出力 - コマンドをすべてasciiとして出力する方法を教えてください。

はスクリプトです:

@echo off 
echo This text is output as standard - no spacing between characters >>C:\log.txt 

REM this one is output with 1 space between characters 
wmic qfe list >>C:\log.txt 

echo This text is also output as standard - no spacing >>C:\log.txt 

サンプル出力

This text is output as standard - no spacing between characters 
C a p t i o n                     C S N a m e     D e s c r i p t i o n    F i x C o m m e n t s  H o t F i x I D  I n s t a l l D a t e  I n s t a l l e d B y         I n s t a l l e d O n  N a m e  S e r v i c e P a c k I n E f f e c t  S t a t u s  

h t t p :// s u p p o r t . m i c r o s o f t . c o m/? k b i d = 4 0 1 2 2 1 2   M F M - 7 4 2 - 0 - 7 1  S e c u r i t y U p d a t e        K B 4 0 1 2 2 1 2        N T A U T H O R I T Y \ S Y S T E M     5/1 8/2 0 1 7     

This text is also output as standard - no spacing 

は実は、私はちょうどバイナリエディタを使用してファイルを見たと文字の間に文字がヌル文字です。おそらく、wmic qfeリストがUnicodeを出力しているはずです。

どのようにして、すべての出力をASCIIまたはすべての出力をUnicodeとして取得するのですか。 asciiとして出力されるすべてが優先されます。

答えて

0
wmic qfe list | find /v "" >> c:\log.txt 
wmic qfe list | findstr "^" >> c:\log.txt 

パイプfindまたはfindstrコマンドへwmicコマンドの出力(あなたの出力は以下の65535行を持っている場合は、注文、またはmoreの問題を持っていない場合もsortを使用することができます)リダイレクトする前に、ファイルへの出力

+0

どのように機能しますか?それはfindがunicodeとasciiを読むことができますがasciiだけを出力できるからですか? –

+0

@AngusComber、私はこの時点で100%確実なデバッガを手元に持っていないので、これは単なる推測です。このアプローチをより多くの* filter *アプリケーションでテストしたところ、動作は一貫していたので、Unicodeを扱うのはコマンドではなく、出力ストリームのタイプに応じて出力を適合させるのは 'wmic'です。 –

関連する問題