用vbs讀取遠(yuǎn)程計(jì)算機(jī)上的文本文件的代碼
問(wèn):
您好,腳本專(zhuān)家!如何讀取遠(yuǎn)程計(jì)算機(jī)上的文本文件?
-- BM
答:
您好,BM。我們得承認(rèn):我們?cè)诶媚湍膯?wèn)題來(lái)達(dá)成我們自己的邪惡目的。本周早些時(shí)候我們回答了有關(guān)如何讀取一組文本文件最后一行的問(wèn)題;在回答中,我們承諾將會(huì)說(shuō)明如何使用 FileSystemObject 對(duì)遠(yuǎn)程計(jì)算機(jī)執(zhí)行同樣的功能。這并無(wú)惡意,只是為了維護(hù)本專(zhuān)欄的精神,除非有人提出有關(guān)對(duì)遠(yuǎn)程計(jì)算機(jī)上的文本文件進(jìn)行處理的問(wèn)題,我們是不會(huì)做出回答的。于是我們選擇了您的問(wèn)題。
因此,沒(méi)錯(cuò),我們?cè)诶媚5绻锰幭?,您的?wèn)題得到了回答。事實(shí)上,讓我們先來(lái)看一看您的問(wèn)題。
如您所知,F(xiàn)ileSystemObject(用于讀寫(xiě)文本文件的對(duì)象)的原本用于本地;而事實(shí)上,您讀過(guò)的有關(guān) FileSystemObject 的任何材料差不多都會(huì)煞費(fèi)苦心地指出,不能對(duì)遠(yuǎn)程計(jì)算機(jī)使用該對(duì)象。盡管事實(shí)并非完全如此:那是因?yàn)?nbsp;FileSystemObject 可以使用 UNC 路徑。假定要讀取的文件位于文件共享目錄中 (\\atl-fs-01\public\myfile.txt)。在這種情況下,打開(kāi)和讀取文本文件就像下面的代碼那樣簡(jiǎn)單:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("\\atl-fs-01\public\myfile.txt", ForReading)
strContents = objTextFile.ReadAll
objTextFile.Close
Wscript.Echo strContents
如您所看到的,我們先是定義一個(gè)名為 ForReading 的常量并將其值設(shè)置為 1。然后創(chuàng)建 FileSystemObject 引用,并調(diào)用 OpenTextFile 方法,傳遞兩個(gè)參數(shù):要操作的文件的 UNC 路徑及常量 ForReading。此時(shí)我們已經(jīng)可以對(duì)文件進(jìn)行所需的任何操作:給您舉一個(gè)操作文本文件的簡(jiǎn)單例子:調(diào)用 ReadAll 方法將文件的全部?jī)?nèi)容讀入名為 strContents 的變量中。然后關(guān)閉文件并回顯 strContents 的值,就是這樣。
目前,只要待操作的文件位于共享文件夾中,這段代碼便很有效。但如果文件不在共享文件夾中,該怎么辦呢?在這種情況下,就只能使用管理共享(如 C$)。即使尚未共享文件夾 C:\Public,以下腳本也能夠讀取文件 MyFile.txt:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("\\atl-fs-01\C$\public\myfile.txt", ForReading)
strContents = objTextFile.ReadAll
objTextFile.Close
Wscript.Echo strContents
如果不使用管理共享,那多半沒(méi)什么辦法。(除非您真的要做出某些瘋狂的舉動(dòng),如使用 WSHController 對(duì)象。但那就要另當(dāng)別論了。)
而這便引出了我們的不可告人目的:如何遍歷遠(yuǎn)程文件夾中的所有文件并使用 FileSystemObject 打開(kāi)和讀取其中的每個(gè)文件?嗯,請(qǐng)看下面這種方法:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "atl-fs-01"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\Logs'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In colFileList
strFilePath = "\\" & strComputer & "\C$\Logs\" & _
objFile.FileName & "." & objFile.Extension
Set objTextFile = objFSO.OpenTextFile(strFilePath, ForReading)
strContents = objTextFile.ReadAll
Wscript.Echo strContents
objTextFile.Close
Next
這段代碼的作用是連接到遠(yuǎn)程計(jì)算機(jī) atl-fs-01,并檢索文件夾 C:\Logs 中所有文件的集合。棘手之處是構(gòu)建每個(gè)文件的路徑,那是因?yàn)槲覀冃枰褂门c以下類(lèi)似的管理共享路徑:
\\atl-fs-01\C$\Logs\MyFile.log
為構(gòu)建該路徑,我們會(huì)各使用一些 WMI 和硬編碼:
strFilePath = "\\" & strComputer & "\C$\Logs\" & _
objFile.FileName & "." & objFile.Extension
我們要做的是:
• 以一對(duì) \ 開(kāi)頭: \\
• 添加計(jì)算機(jī)名稱(chēng):\\atl-fs-01
• 添加一個(gè) \ 和管理共享路徑 C$\Logs\:\\atl-fs-01\C$\Logs\
• 添加 WMI FileName 屬性(只含文件名部分,不含文件擴(kuò)展名):\\atl-fs-01\C$\Logs\MyFile
• 在文件名和文件擴(kuò)展名之間添加句點(diǎn)(因?yàn)榫潼c(diǎn)不是 WMI Extension 屬性的一部分):\\atl-fs-01\C$\Logs\MyFile.
• 添加 WMI 屬性 Extension:\\atl-fs-01\C$\Logs\MyFile.log
這稍顯復(fù)雜,但它構(gòu)建了我們需要的 UNC 路徑。而且,每次完成循環(huán)時(shí)它都會(huì)替換新的文件名和新的文件擴(kuò)展名(計(jì)算機(jī)名稱(chēng)和文件夾路徑從不改變)。于是,我們最終能夠打開(kāi)(并讀?。┻h(yuǎn)程文件夾中的每個(gè)文件。
順便向 BM 表示感謝,感謝您讓我們利用您的問(wèn)題。我們欠您一個(gè)人情!
上一篇:用vbs 實(shí)現(xiàn)從剪貼板中抓取一個(gè) URL 然后在瀏覽器中打開(kāi)該 Web 站點(diǎn)
欄 目:vb
本文標(biāo)題:用vbs讀取遠(yuǎn)程計(jì)算機(jī)上的文本文件的代碼
本文地址:http://mengdiqiu.com.cn/a1/vb/7867.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱(chēng)qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子