Ich versuche, den Namen und die Version jedes auf meinem System installierten Programms in einer CSV-Datei auszugeben. Ich könnte etwas Komplizierteres mit VBScript machen, würde es aber lieber sehr einfach halten und als Batchdatei einbinden, die unmittelbar vor der Durchführung einer Systemsicherung ausgeführt wird. Nach einigen Recherchen bin ich auf Folgendes gestoßen:
wmic product get name,version /format:csv |more >Installed_Apps.csv
Wenn ich die resultierende Datei im Editor öffne, sehe ich, dass oben in der Datei eine leere Zeile und eine Knotenspalte hinzugefügt werden. Obwohl beides nicht erwünscht ist, kann ich mit diesen beiden Merkwürdigkeiten leben. Was mich jedoch stört, ist, dass, wenn ich zweimal auf die Datei klicke und sie in Excel öffne, zwischen jeder Ergebniszeile eine leere Zeile erscheint, die ich nicht sehe, wenn ich die Datei im Editor öffne.
Beispiele:
Notizblock:
ComputerName,Software1,1.0
ComputerName,Software2,2.1
ComputerName,Software3,2.5
Excel:
ComputerName,Software1,1.0
ComputerName,Software2,2.1
ComputerName,Software3,2.5
Ich gehe davon aus, dass dies daran liegt, dass die WMIC-Ausgabe ursprünglich in Unicode war, aber ich dachte, ich würde das richtig umgehen, indem ich |more
dem Befehl etwas hinzufüge. Soweit ich das beurteilen kann, ist die Datei im ASCII-Format, aber ich habe nicht alle Zeichen überprüft.
Gibt es eine Idee, woran dies liegen könnte und wie man es lösen kann, sodass die Datei beim Öffnen in Excel keine zusätzlichen leeren Zeilen aufweist?
Danke!
Antwort1
Der Grund, warum Sie bei der Verwendung leere Zeilen sehen, | more
liegt darin, dass die CSV-Datei zwar im ANSI-Format kodiert ist, jedoch zusätzliche Wagenrückläufe enthält, wie Sie unten sehen können:
Wenn Sie das weglassen, | more
erhalten Sie eine Unicode-CSV. Leider scheint Excel mit solchen CSVs Probleme zu haben, da beim Öffnen die Werte nicht in Spalten aufgeteilt werden. Dafür gibt es zwei Lösungen:
Wenn der Verlust von Unicode-Zeichen (also Nicht-ANSI-Zeichen) für Sie kein Problem darstellt, speichern Sie die CSV-Datei mit ANSI-Kodierung, bevor Sie sie mit Excel öffnen.
Wenn für Sie die Unicode-Kodierung wichtig ist, verwenden Sie den Textimport-Assistenten (
Data tab > From Text
) von Excel mit dem Komma als Trennzeichen:
Bearbeiten:So erhalten Sie direkt eine ANSI-codierte CSV-Datei:
Kopieren
Windows\System32\wbem\en-US\csv.xsl
(ersetzende-DEmit Ihrem Sprachcode) in ein beliebiges Verzeichnis Ihrer Wahl.Öffnen Sie die Datei in einem beliebigen Texteditor wie Notepad und ändern Sie dann dieCodierungAttribut desXML (XSLT)-AusgabemethodeZuWindows-1252ausutf-16, also daraus:
<?xml version="1.0"?> <!-- Copyright (c) Microsoft Corporation. All rights reserved. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="utf-16" omit-xml-declaration="yes"/>
dazu:
<?xml version="1.0"?> <!-- Copyright (c) Microsoft Corporation. All rights reserved. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="Windows-1252" omit-xml-declaration="yes"/>
Laufen
wmic product get name,version /format:csv.xsl > ProductList.csv
Notiz:Nicht-ANSI-Zeichen werden wie folgt codiert:
UTF-16:
ComputerName,用于 Visual Studio 2013 的 Microsoft 报告查看器加载项,11.1.3442.2
Windows-1252 (ANSI):
ComputerName,用于 Visual Studio 2013 的 Microsoft 报告查看器加载项,11.1.3442.2