系統(tǒng):Windows 7
軟件:Excel 2010
本豆介紹使用場(chǎng)景or困惑:
- 想自動(dòng)獲取共享空間中一些文件夾的名稱(chēng)箩祥?
- 文件夾數(shù)目較多,如何快速的獲人撩ァ袍祖?
示例
1.png
如上圖所示,目標(biāo)在于獲取1-1做院,1-2盲泛,...,3-5這些文件夾的名稱(chēng)键耕,這些文件夾都在共享空間中
思考
- 想到的第一個(gè)方法是使用VBA的fso
- 嘗試了一下,速度慢到爆柑营,想砸機(jī)的沖動(dòng)
- 無(wú)奈屈雄,工作還得干,咋整官套?
- 在自己會(huì)的語(yǔ)言中酒奶,bat以速度快,讓我映像深刻奶赔,來(lái)試試看
- 獲取文件夾名稱(chēng)惋嚎,dir,嘗試一下站刑,也搜索了一下另伍,發(fā)現(xiàn)可行
- bat水平有限,所以結(jié)合了點(diǎn)vbs試了一下
邏輯過(guò)程
- 為完成這個(gè)工作绞旅,使用了5個(gè)可執(zhí)行文件(4bat+1vbs)摆尝,感受到了高手的鄙視-_-!!
- 目標(biāo):將所需文件夾名稱(chēng)全部放置于list.txt的文件中
- 邏輯過(guò)程
- 運(yùn)行第1步:刪除當(dāng)前文件夾中其余txt文件及第4步:生成第2級(jí)目錄.bat文件
- 運(yùn)行第2步:生成目標(biāo)文件夾第一級(jí)目錄:即示例中的1,2,3,放置于C1.txt文件中
- 運(yùn)行第3步:生成第4步:生成第2級(jí)目錄.bat文件
- 運(yùn)行第4步:每個(gè)文件夾下的子文件夾清單
- 運(yùn)行第5步:合并生成的文件因悲,生成list.txt
- 第4步與第2步?本質(zhì)上是一樣的堕汞,只是dir執(zhí)行的文件夾路徑不同而已,第3步目標(biāo)就是要獲取第4步的代碼
結(jié)果
3.png
5個(gè)可執(zhí)行文件
4..png
Set fso = CreateObject("Scripting.FileSystemObject")
currentAddr = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path
listAddr = currentAddr & "\C1.txt"
Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateTrue = -1
Set objTxt = fso.OpenTextFile(listAddr, ForReading, TristateTrue)
batAddr = currentAddr & "\" & "第4步:生成第2級(jí)目錄.bat"
If fso.FileExists(batAddr) Then '刪除原文件
fso.DeleteFile (batAddr)
End If
Do While Not objTxt.AtEndOfStream
rowContent = objTxt.ReadLine
If Not InStr(rowContent, ".") <> 0 Then
'新建bat文件
If fso.FileExists(batAddr) Then
Set objBat = fso.OpenTextFile(batAddr, ForAppending, TristateTrue)
Else
Set objBat = fso.CreateTextFile(batAddr, True)
End If
'批處理模板
'set a=2017-06
'cd /d Z:\%a%
'dir /b >%~dp0%a%.txt
'
pathLine = "set Z=F:\【10】微信公眾號(hào)\2-VBA\【3】文章\20171109-文件獲取\示例\test"
objBat.WriteLine (pathLine)
firstLine = "set a=" & rowContent
objBat.WriteLine (firstLine)
secondLine = "cd /d %Z%\%a%"
objBat.WriteLine (secondLine)
thirdLine = "dir /b >%~dp0%a%.txt"
objBat.WriteLine (thirdLine)
fourthLine = ""
objBat.WriteLine (fourthLine)
objBat.Close
End If
Loop
objTxt.Close
代碼截圖
5.png
注意
- 當(dāng)你把文中代碼涉及到的路徑直接改為網(wǎng)絡(luò)空間的地址晃琳,運(yùn)行會(huì)失敗
-
dir
直接對(duì)網(wǎng)絡(luò)地址無(wú)效 - 需要在我的電腦中將網(wǎng)絡(luò)地址映射到本地
- 如下圖讯检,映射地址為Z:
7.png
6.png
本地地址與網(wǎng)絡(luò)地址區(qū)別
- 對(duì)第2步和第3步都有影響琐鲁,下面展示一下第2步兩者的區(qū)別
- 其實(shí)也沒(méi)啥本質(zhì)區(qū)別,只是改變一下變量Z對(duì)應(yīng)的地址即可人灼,尷尬
將網(wǎng)絡(luò)地址映射到本地
8.png
若目標(biāo)文件夾為本地地址
9.png
動(dòng)態(tài)過(guò)程
1.gif
以上為本次的學(xué)習(xí)內(nèi)容围段,下回見(jiàn)
如發(fā)現(xiàn)有錯(cuò)誤,歡迎留言指出
更多精彩挡毅,請(qǐng)關(guān)注微信公眾號(hào)
掃描二維碼蒜撮,關(guān)注本公眾號(hào)
公眾號(hào)底部二維碼.jpg