WMIC |more possui linhas extras quando .csv é aberto no Excel

WMIC |more possui linhas extras quando .csv é aberto no Excel

Estou tentando enviar o nome e a versão de cada programa instalado em meu sistema para um arquivo .csv. Eu poderia fazer algo mais complicado com VBScript, mas preferiria manter isso muito simples para incluir como um arquivo em lote que será executado antes de realizar um backup do sistema. Depois de alguma pesquisa, cheguei ao seguinte:

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

Quando abro o arquivo resultante no Bloco de notas, vejo que ele adiciona uma linha em branco na parte superior do arquivo e uma coluna de nó. Embora nenhum deles seja desejado, posso conviver com essas duas esquisitices. O que está me incomodando, porém, é que se eu clicar duas vezes no arquivo e abrir no Excel, há uma linha em branco entre cada linha de resultados que não vejo quando abro o arquivo no Bloco de Notas.

Exemplos:

Bloco de anotações:

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

Presumo que isso ocorra porque a saída WMIC estava originalmente em Unicode, mas pensei que estava resolvendo isso corretamente adicionando |moreao comando. Pelo que sei, o arquivo está no formato ASCII, mas não inspecionei todos os caracteres.

Alguma ideia sobre o que pode estar causando isso e como resolver isso para que o arquivo não tenha linhas extras em branco ao abrir no Excel?

Obrigado!

Responder1

O motivo pelo qual você vê linhas em branco ao usá-lo | moreé que, embora a codificação do CSV seja ANSI, ele possui retornos de carro extras, como você pode ver abaixo:

1

Se você omitir, | morevocê terá um CSV Unicode. Infelizmente o Excel parece ter problemas com esses CSVs, pois ao abri-los os valores não ficam separados em colunas. Existem duas soluções para isso:

  1. Se você não se importa em perder caracteres Unicode (ou seja, não ANSI), salve o CSV com codificação ANSI antes de abri-lo no Excel.

  2. Se você se preocupa com a codificação Unicode, use o Assistente de importação de texto do Excel ( Data tab > From Text) com vírgula especificada como delimitador:

    2


Editar:Esta é a maneira direta de obter um CSV codificado em ANSI:

  1. Copiar Windows\System32\wbem\en-US\csv.xsl(substituiren-EUAcom o código do seu idioma) para qualquer diretório de sua escolha.

  2. Abra o arquivo em qualquer editor de texto, como o Bloco de Notas, e altere ocodificaçãoatributo doMétodo de saída XML (XSLT)paraWindows-1252deutf-16, ou seja, a partir disso:

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

    para isso:

    <?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. Correrwmic product get name,version /format:csv.xsl > ProductList.csv

Observação:Caracteres não ANSI serão codificados da seguinte forma:

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

informação relacionada