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

1

Estou tentando enviar o nome e a versão de cada programa instalado no meu sistema para um arquivo .csv. Eu poderia fazer algo mais complicado com o VBScript, mas prefiro manter isso muito simples para incluir como um arquivo em lotes que será executado apenas antes de executar um backup do sistema. Depois de algumas pesquisas, descobri o seguinte:

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

Quando eu abro o arquivo resultante no Bloco de Notas, vejo que ele adiciona uma linha em branco na parte superior do arquivo e uma coluna do nó. Enquanto nenhum deles é desejado, eu posso viver com essas duas esquisitices. O que me incomoda, no entanto, é 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 notas:

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

Suponho que isso ocorra porque a saída da WMIC estava originalmente em Unicode, mas achei que estava trabalhando corretamente, adicionando |more ao comando. Pelo que posso dizer, o arquivo está no formato ASCII, mas não inspecionei todos os caracteres.

Alguma opinião sobre o que pode estar causando isso e como resolver isso de tal forma que o arquivo não tenha as linhas extras em branco ao abrir no Excel?

Obrigado!

    
por Fred 05.05.2015 / 04:08

1 resposta

2

O motivo pelo qual você está vendo linhas em branco quando você usa | more é que, embora a codificação do CSV seja ANSI, tudo bem, ele tem retornos extras de carro, como você pode ver abaixo:

Sevocêomitiro|more,acabarácomumCSVUnicode.Infelizmente,oExcelpareceterproblemascomessesCSVs,poisaoabri-los,osvaloresnãosãoseparadosemcolunas.Existemduassoluçõesparaisso:

  1. SevocênãosepreocupaemperdercaracteresUnicode(ouseja,não-ANSI),salveoCSVcomacodificaçãoANSIantesdeabri-locomoExcel.

  2. SevocêsepreocupacomacodificaçãoUnicode,useoAssistentedeImportaçãodeTextodoExcel(Datatab>FromText)comavírgulaespecificadacomoodelimitador:

Editar: Este é o caminho direto para acabar com um arquivo CSV codificado em ANSI:

  1. Copie Windows\System32\wbem\en-US\csv.xsl (substitua en-US por seu código de idioma) para qualquer diretório de sua escolha.

  2. Abra o arquivo em qualquer editor de texto, como o Bloco de notas, em seguida, altere o atributo codificação do Método de saída XML (XSLT) para Windows-1252 de utf-16 , ou seja, deste:

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

Nota: Os 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
    
por 05.05.2015 / 05:21