我試圖將系統上安裝的每個程式的名稱和版本輸出到 .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
|more
我認為這是因為 WMIC 輸出最初是 Unicode 格式的,但我認為我透過添加到命令來正確解決這個問題。據我所知,該文件是 ASCII 格式,但我沒有檢查所有字元。
對於可能導致此問題的原因以及如何解決此問題有什麼想法,以便文件在 Excel 中開啟時不會有多餘的空白行?
謝謝!
答案1
使用時看到空白行的原因| more
是,雖然 CSV 的編碼是 ANSI,但它有額外的回車符,如下:
如果省略,| more
您最終會得到 Unicode CSV。不幸的是,Excel 似乎對此類 CSV 存在問題,因為打開它們時,值不會分成列。對此有兩種解決方案:
如果您不介意遺失 Unicode(即非 ANSI)字符,請在使用 Excel 開啟之前使用 ANSI 編碼儲存 CSV。
如果您確實關心 Unicode 編碼,請使用 Excel 的文字匯入精靈 (
Data tab > From Text
) 並指定逗號作為分隔符號:
編輯:以下是最終獲得 ANSI 編碼 CSV 的直接方法:
複製
Windows\System32\wbem\en-US\csv.xsl
(替換en-US與您的語言代碼)到您選擇的任何目錄。在任何文字編輯器(例如記事本)中開啟該文件,然後更改編碼的屬性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