一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - VBS - 用vbs讀取遠程計算機上的文本文件的代碼

用vbs讀取遠程計算機上的文本文件的代碼

2020-07-10 17:59VBS教程網 VBS

如何讀取遠程計算機上的文本文件?

問:
您好,腳本專家!如何讀取遠程計算機上的文本文件?
-- BM
答:
您好,BM。我們得承認:我們在利用您和您的問題來達成我們自己的邪惡目的。本周早些時候我們回答了有關如何讀取一組文本文件最后一行的問題;在回答中,我們承諾將會說明如何使用 FileSystemObject 對遠程計算機執行同樣的功能。這并無惡意,只是為了維護本專欄的精神,除非有人提出有關對遠程計算機上的文本文件進行處理的問題,我們是不會做出回答的。于是我們選擇了您的問題。
因此,沒錯,我們在利用您。但如果往好處想,您的問題得到了回答。事實上,讓我們先來看一看您的問題。
如您所知,FileSystemObject(用于讀寫文本文件的對象)的原本用于本地;而事實上,您讀過的有關 FileSystemObject 的任何材料差不多都會煞費苦心地指出,不能對遠程計算機使用該對象。盡管事實并非完全如此:那是因為 FileSystemObject 可以使用 UNC 路徑。假定要讀取的文件位于文件共享目錄中 (\\atl-fs-01\public\myfile.txt)。在這種情況下,打開和讀取文本文件就像下面的代碼那樣簡單:

復制代碼 代碼如下:


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 


如您所看到的,我們先是定義一個名為 ForReading 的常量并將其值設置為 1。然后創建 FileSystemObject 引用,并調用 OpenTextFile 方法,傳遞兩個參數:要操作的文件的 UNC 路徑及常量 ForReading。此時我們已經可以對文件進行所需的任何操作:給您舉一個操作文本文件的簡單例子:調用 ReadAll 方法將文件的全部內容讀入名為 strContents 的變量中。然后關閉文件并回顯 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 


如果不使用管理共享,那多半沒什么辦法。(除非您真的要做出某些瘋狂的舉動,如使用 WSHController 對象。但那就要另當別論了。)
而這便引出了我們的不可告人目的:如何遍歷遠程文件夾中的所有文件并使用 FileSystemObject 打開和讀取其中的每個文件?嗯,請看下面這種方法:

復制代碼 代碼如下:


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 


這段代碼的作用是連接到遠程計算機 atl-fs-01,并檢索文件夾 C:\Logs 中所有文件的集合。棘手之處是構建每個文件的路徑,那是因為我們需要使用與以下類似的管理共享路徑:
\\atl-fs-01\C$\Logs\MyFile.log
為構建該路徑,我們會各使用一些 WMI 和硬編碼:
strFilePath = "\\" & strComputer & "\C$\Logs\" & _
    objFile.FileName & "." & objFile.Extension
我們要做的是:
• 以一對 \ 開頭: \\
• 添加計算機名稱:\\atl-fs-01
• 添加一個 \ 和管理共享路徑 C$\Logs\:\\atl-fs-01\C$\Logs\
• 添加 WMI FileName 屬性(只含文件名部分,不含文件擴展名):\\atl-fs-01\C$\Logs\MyFile
• 在文件名和文件擴展名之間添加句點(因為句點不是 WMI Extension 屬性的一部分):\\atl-fs-01\C$\Logs\MyFile.
• 添加 WMI 屬性 Extension:\\atl-fs-01\C$\Logs\MyFile.log
這稍顯復雜,但它構建了我們需要的 UNC 路徑。而且,每次完成循環時它都會替換新的文件名和新的文件擴展名(計算機名稱和文件夾路徑從不改變)。于是,我們最終能夠打開(并讀取)遠程文件夾中的每個文件。
順便向 BM 表示感謝,感謝您讓我們利用您的問題。我們欠您一個人情!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 情趣内衣在线观看 | 男男视频18免费网站 | 俄罗斯一级在线播放 | 美女露全身永久免费网站 | 特黄视频 | 亚洲国产网址 | 国产成人影院在线观看 | 国产99视频精品免费视频免里 | 欧美成人精品第一区二区三区 | 免费看又黄又爽又猛的视频软件- | 国产日韩欧美综合一区二区三区 | 欧美一级在线全免费 | 国产精品美女久久久久网站 | 春意影院午夜爽爽爽免费 | 日本videosdesexo乱 | 日本大片免aaa费观看视频 | 亚洲欧美日韩精品 | 精品视频一区二区三区 | 男人网站视频 | 男人香蕉好大好爽视频 | 欧美久久天天综合香蕉伊 | 18美女光胸光屁屁洗澡 | 亚洲va国产日韩欧美精品色婷婷 | 爽好紧别夹宝贝叫大声点护士 | 亚洲玖玖 | 国产日韩一区二区三区在线播放 | 欧美日韩国产成人综合在线 | 91夜夜操 | 青青青青青国产费线在线观看 | 小舞同人18av黄漫网站 | 春意影院午夜爽爽爽免费 | 欧美成狂野欧美在线观看 | 亚洲国产经典 | 国产亚洲精品线观看77 | 亚州在线 | 欧美又黄又激烈真实床戏 | 午夜香蕉成视频人网站高清版 | 天堂在线看 | 热99这里有精品综合久久 | 日本成熟 | 国产一区私人高清影院 |