システムにインストールされている各プログラムの名前とバージョンを .csv ファイルに出力しようとしています。VBScript を使用すると、より複雑な処理も実行できますが、システム バックアップを実行する直前に実行されるバッチ ファイルとして組み込むという非常にシンプルな方法を採用したいと思います。調査の結果、次の方法にたどり着きました。
wmic product get name,version /format:csv |more >Installed_Apps.csv
結果のファイルをメモ帳で開くと、ファイルの先頭に空白行とノード列が追加されていることがわかります。どちらも望ましくありませんが、これらの奇妙な動作はどちらも我慢できます。ただし、気になるのは、ファイルを 2 回クリックして 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 ですが、以下に示すように余分なキャリッジ リターンがあるためです。
を省略すると、| more
Unicode CSV になります。残念ながら、Excel ではこのような CSV を開くと値が列に分割されないという問題があるようです。これには 2 つの解決策があります。
Unicode (つまり、ANSI 以外の) 文字が失われても問題ない場合は、Excel で開く前に CSV を ANSI エンコードで保存します。
Unicode エンコードを気にする場合は、
Data tab > From Text
区切り文字としてコンマを指定して Excel のテキスト インポート ウィザード ( ) を使用します。
編集:ANSI でエンコードされた CSV を直接作成する方法は次のとおりです。
コピー
Windows\System32\wbem\en-US\csv.xsl
(置換)ja-JP 日本語(言語コード付き)を任意のディレクトリに保存します。ファイルをメモ帳などのテキストエディタで開き、エンコーディングの属性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"/>
走る
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,用于 Visual Studio 2013 的 Microsoft 报告查看器加载项,11.1.3442.2