Ich versuche, die Zeichenfolge „KB“ in eine Datei anhängen, nachdem die Ausgabe von einem Windows-Befehl geschrieben zu haben:Anfügen in Windows-Datei mit >> zeigt seltsame Zeichen
C:\Users\Administrator> wmic OS get FreePhysicalMemory > C:\temp\temp.txt
C:\Users\Administrator> echo KB >> C:\temp\temp.txt
aber im Notizblock ich einige sehen seltsame orientalische Zeichen anstelle von KB
FreePhysicalMemory
1441960
䉋ഠ∊䉋•
ich erwarte, dass der Text "FreePhysicalMemory 1.441.960 KB" zu sehen. Wenn möglich, ich möchte KB nach der Nummer haben, nicht auf einer neuen Zeile. Sobald ich das tun werde ich die Datei mit einem anderen Programm (Intersystem Caché) verwenden und es in einer anderen HTML-Datei platzieren, aber das sollte keine Rolle spielen.
Sie brauchen nicht zu more.com zu Rohr. Die 'for'-Schleife von CMD führt wmic.exe aus, wobei das stdout auf eine Pipe umgeleitet wird. Das ist alles, was Sie brauchen, um wmic.exe Ausgabe OEM-kodierten Text zu machen. Im Allgemeinen sollten Sie hier auf mojibake achten, da CMD die Ausgabezeilen mit der aktuellen Konsolencodepage dekodiert und ansonsten ANSI verwendet, wenn es ohne Konsole ausgeführt wird (d. H. Getrennt). Die Konsole ist standardmäßig auf OEM eingestellt, wurde jedoch möglicherweise über chcp.com geändert. – eryksun
Die for-Schleife funktioniert um einen Fehler in wmic.exe. Der C-Runtime Low I/O-Dateideskriptor wird im Textmodus geöffnet, der LF => CRLF übersetzt. wmic.exe schreibt Zeilen, die bereits in CRLF enden, so dass die C-Laufzeit Zeilen schreibt, die mit CRCRLF enden. Die erste "for" -Schleife teilt Zeilen auf der letzten CRLF, hinterlässt jedoch eine nachlaufende CR auf jeder Zeile. – eryksun
Im Allgemeinen mit Wmic.exe Codierung seiner Ausgabe als OEM-Text möglicherweise Unicode-Zeichenfolgen wie Dateinamen, Registrierungstext und Benutzernamen falsch codieren. Es ist besser, wenn UTF-16 in eine Datei geschrieben wird, wenn das möglicherweise ein Problem ist. – eryksun