在 Excel 中打开 .csv 时,WMIC |more 有多余的行

在 Excel 中打开 .csv 时,WMIC |more 有多余的行

我正在尝试将系统上安装的每个程序的名称和版本输出到 .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

Excel:

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)字符,请在使用 Excel 打开 CSV 之前先使用 ANSI 编码保存它。

  2. 如果您确实关心 Unicode 编码,请使用 Excel 的文本导入向导 ( Data tab > From Text) 并以逗号指定为分隔符:

    2


编辑:以下是获得 ANSI 编码 CSV 的直接方法:

  1. 复制Windows\System32\wbem\en-US\csv.xsl(替换英文将您喜欢的语言复制到任何目录(包括您的语言代码)。

  2. 在任何文本编辑器(如记事本)中打开该文件,然后更改编码的属性XML (XSLT) 输出方法Windows-1252utf-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

相关内容