iT邦幫忙

0

軟體列表.txt 轉檔成excel

bwing 2013-10-29 10:55:2518251 瀏覽

請問每個client PC 會產成 hostname.text 內容如下,約800(台)檔案,請問如何全部匯入 excel。 謝謝!!

7-Zip 9.20
Adobe Flash Player 10 ActiveX--Version: 10.0.32.18
嘸蝦米輸入法 7.0 標準版--Version: 7, 0, 4, 433
Windows Desktop Search 3.01--Version: 03.01.6000.72
Microsoft .NET Framework 1.1 (1033)
Microsoft .NET Framework 1.1
Microsoft .NET Framework 3.5 SP1

wiseguy iT邦超人 1 級 ‧ 2013-10-29 11:31:25 檢舉
既然沒有提到要匯成什麼格式,那麼選800個檔案,然後按右鍵用 Excel 開啟,這就全部匯進來了不是嗎?偷笑
月半車甫 iT邦研究生 3 級 ‧ 2013-10-29 11:49:45 檢舉
最近才剛完成軟體盤點彙總,不過我才150個檔案不到,後來是用vb6完成這件事的!
你有800個檔案,加油!
8
mie
iT邦新手 5 級 ‧ 2013-10-29 11:49:08

哈,看不是很懂您的問題描述是什麼意思,
不過,單就您的問題標題~您可以這樣做…

  1. 先將.TXT 另存成.CVS
  2. 再用excel軟體開啟即可
    當然您可以善用「,」或其他符號當作分隔,轉出來會比較符合您的預期~
6
anderson_lee
iT邦新手 5 級 ‧ 2013-10-29 11:49:19

先開啟Excel,將此檔拉進來,另存新檔即可。如果要分欄位,中間要有Tab

10
a218066
iT邦研究生 3 級 ‧ 2013-10-29 11:52:45

直接用excel去開他,他就會出現分析欄位的選擇項目給你設定,如沒跳出來請圈選第一列後選分析就可以了

8
iknowlab
iT邦研究生 4 級 ‧ 2013-10-29 11:58:57

這是期末專題嗎?
不能多寫些來龍去脈嗎?
這個檔的產生是 windows 的功能,還是自己寫程式生成的?
匯入 Excel 的目的?要作統計報表?
還是這些檔案都還在 800壯士身上,你要知道如何撈回?

我覺得這是一個不錯的軟體服務,若能定時收取每台電腦的軟體安裝資訊,並且有個統計圖表,也就很容易掌握電腦的相容性,並且於該電腦出狀況時,得以查明。

8
海綿寶寶
iT邦超人 1 級 ‧ 2013-10-29 13:56:19

在那800個檔案的目錄
下這列指令
將800個檔案合成一個大檔案

<pre class="c" name="code">
find /v "zzz" *.text > combined.txt

然後再將 combined.txt 匯入 Excel

其實不匯入也可以
反正都只是個亂七八糟的資料而已
打嗑睡

月半車甫 iT邦研究生 3 級 ‧ 2013-10-29 14:45:44 檢舉

iT邦幫忙MVPantijava提到:
其實不匯入也可以
反正都只是個亂七八糟的資料而已

這句話應該沒錯,因為每一筆軟體都沒有紀錄是從哪個pc取來的,還要加工過的。

find /v "zzz" *.text > combined.txt

但這個方法好實用

蟹老闆 iT邦大師 1 級 ‧ 2013-10-29 19:16:09 檢舉

iT邦幫忙MVPantijava提到:
亂七八糟的資料

應該不會亂七八糟,檔名是主機的名稱,可以用檔名加各個項目的資料來識別或統計資料

10
player
iT邦大師 1 級 ‧ 2013-10-29 18:05:17

bwing提到:
約800(台)

想必Microsoft與商業軟體聯盟(Business Software Aliance)
會對於貴公司的版權買到多少
很有興趣

Orz

14
蟹老闆
iT邦大師 1 級 ‧ 2013-10-29 19:11:40

可以自動化的話是不錯的方式
如果是我會用FTP加排程來做,這樣只要指定時間到自動就會做事了。

<pre class="c" name="code">
Set AdminHost=用來整理資料的主機名稱
Set NewFile=目地檔案名稱.csv
Set Format=來源檔不含.的附檔名
Set Server=FTP主機IP或名稱
Set Acc=FTP使用者帳號
Set Pass=FTP使用者密碼
Set File=來源端的檔案所在路徑+%COMPUTERNAME%(自動抓取電腦名稱).%Format%
Set FilePath=FTP 儲存的路徑
Set FtpPar=FTP參數檔路徑及檔名
SETLOCAL ENABLEDELAYEDEXPANSION
IF "%COMPUTERNAME%" EQU "%AdminHost%" (Goto Admin) ELSE (Goto Client)
:Admin
::=====================================
Echo "主機名稱","項目">%NewFile%
For %%S In (*.%Format%) Do (
	For /f %%J In ('Type %%~fS') Do Echo "%%~nS","%%J" >>%NewFile%
)
::=====================================
Goto :EOF
:Client
Echo OPEN %Server%>"%FtpPar%"
Echo %Acc%>>"%FtpPar%"
Echo %Pass%>>"%FtpPar%"
Echo CD %FilePath%>>"%FtpPar%"
Echo PUT %File%>>"%FtpPar%"
Echo CLOSE>>"%FtpPar%"
Echo BYE>>"%FtpPar%"
FTP -s:"%FtpPar%"
Del "%FtpPar%"
Goto :EOF

使用方式
資料整理端
使用排定的時間來執行批次檔,當時間到會自動整合資料到指定的檔案中,可由EXCEL來開啟

資料來源端
使用排定的時間來執行批次檔,當時間到會自動將指定的資料上傳到FTP中

資料整理端與FTP是同一台的話可以連下載都免了,或可以再加入下載的指令也是可以的。

如果不想太複雜可以只複製
::=====================================

::=====================================
之間的語法即可自動整理,所有.text 資料必需在同一個路徑中

看更多先前的回應...收起先前的回應...
wiseguy iT邦超人 1 級 ‧ 2013-10-29 21:59:30 檢舉

蟹老闆真認真!讚
問題是 .... 這題的重點應該是《在 Excel 裡要怎麼呈現哪些文字資料》才對。不過樓主一點都沒提,所以也不用這麼講究了,反正只要讓 Excel 讀進去而已,正如海綿大講的一樣,呈現不出想看的報表,再多資料也只是亂七八糟的資料而已。

蟹老闆 iT邦大師 1 級 ‧ 2013-10-30 00:27:49 檢舉

wiseguy提到:
在 Excel 裡要怎麼呈現哪些文字資料

.CSV檔可用Excel直接開啟,依樓主的狀況在Excel打開後會有二個欄位,第一欄是主機名稱,第二欄就是.text中的資料,這樣的話可以得知哪台電腦安裝了什麼程式,
只是樓主並沒有很清楚的表達出他所想的,我只是純猜測他可能是要統計或記錄哪台電腦安裝了什麼程式,若單純的匯入那些資料真的會是一份不可用的資料,所以在每一筆的資料前加上了主機名稱,這樣的話就可以得知什麼電腦裝了什麼程式.
還是我猜錯他的用意了驚驚驚

wiseguy iT邦超人 1 級 ‧ 2013-10-30 08:41:00 檢舉

dream提到:
在每一筆的資料前加上了主機名稱,這樣的話就可以得知什麼電腦裝了什麼程式.

如果需求這麼簡單,那就不需要《匯入 Excel》了,文字檔不就可以知道了嗎?

蟹老闆真認真 +1

其實我是
猜測發問人可能會問後不理
或者將整篇刪除
所以我就隨便回一回
臉紅

蟹老闆 iT邦大師 1 級 ‧ 2013-10-30 12:33:55 檢舉

antijava提到:
所以我就隨便回一回

意思是我輸了(認真就輸了)
怒怒怒怒

蟹老闆 iT邦大師 1 級 ‧ 2013-10-30 12:34:59 檢舉

wiseguy提到:
如果需求這麼簡單

不知道內,不過應該如海綿寶寶說的
瞎

6
ramonliu
iT邦新手 4 級 ‧ 2013-10-30 08:27:24

嗯... 感覺上, 還不如去裝一個MIS工具, 省去一堆麻煩~
http://www.spiceworks.com/
這套是免費的 XD

6
cyuwww
iT邦新手 2 級 ‧ 2013-10-30 10:10:09

小弟也曾經遇過類似問題,
當然也可以選擇免費或是付費軟體。
但,
Dream大大的答案,真是個好答案!
簡單乾淨,不用擔心資料外洩;
且必要時,仍可以說不知道公司有多少軟體。
.
不過,資料蒐集的越完整,只是便宜軟體公司「來要錢」而已。

6
ctn7001
iT邦新手 4 級 ‧ 2013-10-30 14:42:43

用excel vba 或巨集就可以做到了

  1. 開啟excel
  2. 可以將檔案名稱謄成清單 寫在Excel 的欄位裡再去讀他,彈性會比較大,在產生文字檔時可以不固檔名或副檔名,連路徑都可以用相同方式去讀
  3. 寫VBA 或巨集 將檔案開啟, 開啟是用分隔符號或固定寬度都可以直接寫在 VBA 或巨集,不用特別改檔案為CSV或其他副檔名
  4. 寫VBA 或巨集 將開啟的檔案匯入1個Excel檔,方式1 :copy 貼成 1個sheet, 方式2 : 複製sheet 到同個excel 變成有800個sheet的excel
  5. 2, 3, 4步驟 可以用VBA 寫迴圈隨你有幾個檔案,一次做完 後 連存檔,及檔案名稱都可以直接寫到Excel 裡完成.
  6. 注意 資料量會不會超過excel的總行數 或 是否檔案過大,造成excel無法開啟
  7. 缺點 : 執行時excel會被hold住,無法使用,速度要看資料量,不過800個檔案還要考慮會不會超到Excel 當掉
  8. 可行性: 上面的流程我都寫過,只是檔案數沒這麼多
0
heyday
iT邦新手 5 級 ‧ 2013-10-30 16:06:50

因為看不太懂題目
我猜猜看
你已經把800台的hostname.text匯到某資料匣
它是命名為:hostname001.text~hostname800.text
你要把這800個檔案匯入一支Excel檔裡
如果是
可以在DOS環境下處理看看
c:\hostname\>copy *.text hostname.xls
此指令會把所有副檔名為.text合併成hostname.xls
再用Excel即可直接開啟hostname.xls

若資料量超大,會造成dos無法負擔,你可以分8份處理..

以上建議

8
月半車甫
iT邦研究生 3 級 ‧ 2013-11-01 17:24:17

以我做過的軟體盤點來舉例

檔案內容大概會有以下三段:SYSTEM,SOFTWARE,PROCESSES

SYSTEM

Host name: WS****
IP-address: 192.168.*****
User name: ***\***
Description: 工程******
Operating system: Microsoft Windows 7 (version 6.1.7601; build 7601)
Name: Microsoft Windows 7
Version: 6.1.7601
Build: 7601

SOFTWARE

7-Zip 9.20
Adobe Flash Player 11 ActiveX, Version: 11.3.300.271, Publisher: Adobe Systems Incorporated, Size: 6.0 MB
Adobe Reader X (10.1.6) - Chinese Traditional, Version: 10.1.6, Publisher: Adobe Systems Incorporated, Install date: 2013-02-21, Size: 198.2 MB

PROCESSES

explorer.exe (C:\Windows\Explorer.EXE)

這個收集到的是工程再畫Layout的PC,檔名就是電腦名稱,
這個電腦名稱資訊會出現在SYSTEM這段的不同行。

真正想收集到800台電腦的就是SYSTEM+SOFTWARE這2段,會有版本序號資訊,重點是,
必須整理成兩個欄位,分別是1.主機名稱,2.軟體名稱,甚至IP,序號等等額外欄位。

而這個檔案,初估就有將近500行的資訊,所以不先篩選就匯入Excel的話,
800個檔案大概就要500*800=40萬筆資料!

用EXCEL VBA喔!很好,慢慢等,且Office至少要2007以上版本。

花得起錢的公司用軟體盤點軟體直接監控每部PC的安裝行為,用不著這麼麻煩。
會上來問的,應該都是公司不想花錢,卻又要IT自己完全掌控每部PC,
但800部PC的公司也花不起這個監控軟體?

原問者,應該只註冊個帳號問問,搞不好也不會再上來,
甚至為了這個查緝涵離職了,都有可能吧!
這是我做過的150部PC的檔案彙總經驗。

我要發表回答

立即登入回答