WMIC |more имеет дополнительные строки при открытии .csv в Excel

WMIC |more имеет дополнительные строки при открытии .csv в Excel

Я пытаюсь вывести имя и версию каждой программы, установленной в моей системе, в файл .csv. Я мог бы сделать что-то более сложное с помощью VBScript, но предпочел бы сохранить это очень простым, включив в пакетный файл, который будет запущен непосредственно перед выполнением резервного копирования системы. После некоторых исследований я пришел к следующему:

wmic product get name,version /format:csv |more >Installed_Apps.csv

Когда я открываю полученный файл в Блокноте, я вижу, что он добавляет пустую строку в начало файла и столбец узлов. Хотя ни то, ни другое нежелательно, я могу жить с обеими этими странностями. Однако меня беспокоит то, что если я дважды щелкну по файлу и открою его в Excel, между каждой строкой результатов будет пустая строка, которую я не вижу, когда открываю файл в Блокноте.

Примеры:

Блокнот:

ComputerName,Software1,1.0
ComputerName,Software2,2.1
ComputerName,Software3,2.5

Эксель:

ComputerName,Software1,1.0

ComputerName,Software2,2.1

ComputerName,Software3,2.5

Я предполагаю, что это потому, что вывод WMIC изначально был в Unicode, но я думал, что обхожу это правильно, добавляя |moreк команде. Насколько я могу судить, файл в формате ASCII, но я не проверял все символы.

Есть ли у вас мысли о том, что может быть причиной этого и как решить эту проблему, чтобы в файле не было лишних пустых строк при открытии в Excel?

Спасибо!

решение1

Причина, по которой вы видите пустые строки при использовании, | moreзаключается в том, что, хотя кодировка CSV и соответствует ANSI, в ней есть дополнительные символы возврата каретки, как вы можете видеть ниже:

1

Если вы опустите, то | moreполучите Unicode CSV. К сожалению, у Excel, похоже, есть проблемы с такими CSV, поскольку при их открытии значения не разделяются на столбцы. Для этого есть два решения:

  1. Если вас не волнует потеря символов Unicode (т. е. не ANSI), сохраните CSV-файл в кодировке ANSI, прежде чем открывать его в Excel.

  2. Если вас интересует кодировка Unicode, используйте мастер импорта текста Excel ( Data tab > From Text), указав запятую в качестве разделителя:

    2


Редактировать:Вот прямой способ получить CSV-файл в кодировке ANSI:

  1. Копировать Windows\System32\wbem\en-US\csv.xsl(заменить)en-USс кодом вашего языка) в любой каталог по вашему выбору.

  2. Откройте файл в любом текстовом редакторе, например в Блокноте, затем изменитекодированиеатрибутМетод вывода XML (XSLT)кWindows-1252отutf-16, т.е. отсюда:

    <?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"/>
    

    к этому:

    <?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. Бегатьwmic product get name,version /format:csv.xsl > ProductList.csv

Примечание:Символы, не входящие в ANSI, будут кодироваться следующим образом:

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

Связанный контент