WMIC |more hat zusätzliche Zeilen, wenn .csv in Excel geöffnet wird

WMIC |more hat zusätzliche Zeilen, wenn .csv in Excel geöffnet wird

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 |moredem 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, | moreliegt 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:

1

Wenn Sie das weglassen, | moreerhalten 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:

  1. 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.

  2. 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:

    2


Bearbeiten:So erhalten Sie direkt eine ANSI-codierte CSV-Datei:

  1. Kopieren Windows\System32\wbem\en-US\csv.xsl(ersetzende-DEmit Ihrem Sprachcode) in ein beliebiges Verzeichnis Ihrer Wahl.

  2. Ö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"/>
    
  3. Laufenwmic 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,&#29992;&#20110; Visual Studio 2013 &#30340; Microsoft &#25253;&#21578;&#26597;&#30475;&#22120;&#21152;&#36733;&#39033;,11.1.3442.2

verwandte Informationen