Estoy intentando enviar el nombre y la versión de cada programa instalado en mi sistema a un archivo .csv. Podría hacer algo más complicado con VBScript, pero preferiría mantenerlo muy simple para incluirlo como un archivo por lotes que se ejecutará justo antes de realizar una copia de seguridad del sistema. Después de investigar un poco, se me ocurrió lo siguiente:
wmic product get name,version /format:csv |more >Installed_Apps.csv
Cuando abro el archivo resultante en el Bloc de notas, veo que agrega una fila en blanco en la parte superior del archivo y una columna de nodo. Si bien ninguno de los dos es deseado, puedo vivir con ambas rarezas. Sin embargo, lo que me molesta es que si hago clic dos veces en el archivo y lo abro en Excel, hay una fila en blanco entre cada fila de resultados que no veo cuando abro el archivo en el Bloc de notas.
Ejemplos:
Bloc:
ComputerName,Software1,1.0
ComputerName,Software2,2.1
ComputerName,Software3,2.5
Sobresalir:
ComputerName,Software1,1.0
ComputerName,Software2,2.1
ComputerName,Software3,2.5
Supongo que esto se debe a que la salida WMIC estaba originalmente en Unicode, pero pensé que estaba solucionando eso correctamente agregando |more
al comando. Por lo que puedo decir, el archivo está en formato ASCII, pero no inspeccioné todos los caracteres.
¿Alguna idea sobre lo que podría estar causando esto y cómo resolverlo de modo que el archivo no tenga filas en blanco adicionales al abrir en Excel?
¡Gracias!
Respuesta1
La razón por la que ves filas en blanco cuando lo usas | more
es que, aunque la codificación CSV es ANSI, tiene retornos de carro adicionales, como puedes ver a continuación:
Si omites el resultado, | more
obtendrás un CSV Unicode. Desafortunadamente, Excel parece tener problemas con este tipo de archivos CSV, ya que al abrirlos los valores no están separados en columnas. Hay dos soluciones para esto:
Si no le importa perder caracteres Unicode (es decir, que no sean ANSI), guarde el CSV con codificación ANSI antes de abrirlo con Excel.
Si le importa la codificación Unicode, utilice el Asistente para importación de texto de Excel (
Data tab > From Text
) con la coma especificada como delimitador:
Editar:Esta es la forma directa de terminar con un CSV codificado ANSI:
Copiar
Windows\System32\wbem\en-US\csv.xsl
(reemplazares-UScon su código de idioma) a cualquier directorio de su elección.Abra el archivo en cualquier editor de texto, como el Bloc de notas, luego cambie elcodificaciónatributo de laMétodo de salida XML (XSLT)aWindows-1252deutf-16, es decir, de esto:
<?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"/>
a esto:
<?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"/>
Correr
wmic product get name,version /format:csv.xsl > ProductList.csv
Nota:Los caracteres que no sean ANSI se codificarán de la siguiente manera:
UTF-16:
ComputerName,用于 Visual Studio 2013 的 Microsoft 报告查看器加载项,11.1.3442.2
Windows-1252 (ANSI):
ComputerName,用于 Visual Studio 2013 的 Microsoft 报告查看器加载项,11.1.3442.2