2017-05-19 4 views
0

J'ai un script qui est exécuté à partir d'un service qui est construit en utilisant C++ et n'est pas construit en utilisant unicode. Ce programme exécute le script ci-dessous et étrangement, la sortie du script exécutant la ligne de liste wmic qfe semble sortir en unicode. Exemple de sortie ci-dessous.Sortie ascii et unicode mixtes à partir du script - comment obtenir la commande de sortie tout comme ascii?

est le script ici:

@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 

Exemple de sortie

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 

En fait, je viens de visualiser le fichier en utilisant un éditeur hexadécimal et les caractères entre les lettres sont des caractères nuls. donc probablement wmic qfe liste doit sortir unicode.

Alors, comment puis-je soit tout sortir comme ASCII ou toutes les sorties comme unicode. Tout le rendement en tant que ascii serait préféré.

Répondre

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

redirigez la sortie de la commande wmic à une commande find ou findstr (vous pouvez aussi utiliser sort si vous n'avez pas de problèmes avec l'ordre, ou more si votre sortie a moins de 65535 lignes) avant de rediriger la sortie dans le fichier.

+0

Comment cela fonctionne-t-il? Est-ce parce que find peut lire unicode AND ascii mais seulement des sorties ascii? –

+0

@AngusComber, je n'ai pas de débogueur à portée de main pour être sûr à 100%, donc c'est juste une supposition. J'ai testé cette approche avec plus d'applications * filter * et le comportement est cohérent, donc, ce n'est pas la commande utilisée qui gère l'unicode, c'est 'wmic' qui adapte sa sortie en fonction du type de flux sortant. –