jmsdhn 發表於 2017-9-10 07:30

[WSH] 如何判斷某類型檔案是否存在

本帖最後由 jmsdhn 於 2017-9-10 07:50 編輯

這是某段指令Set objFSO = CreateObject("Scripting.FileSystemObject")

For i = 1 to 100
      objFSO.CreateFolder "R:\XYZ" & i
      If objFSO.FileExists("R:\*.jpg") Then
                objFSO.MoveFile "R:\*.jpg","R:\XYZ" & i
      end If
Next問題一:
但好像沒有檔案移動的反應
是否objFSO.FileExists只能判斷某個完整路徑檔案(r:\abc.jpg)
而不能判斷(r:\*.jpg)
有其他指令可以做到嗎?

問題二:
是否可以讓迴圈中的指令
objFSO.CreateFolder "R:\XYZ" & i
所建立的資料夾名稱
可以是XYZ001,~XYZ099,XYZ100 (或是XYZ0001,~XYZ099,XYZ0100等等)
而不是XYZ1,~XYZ99,XYZ100

謝謝指教!




maodou 發表於 2017-9-10 23:17

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("R:\")

Function Lpad(strInput, length, character)
    Lpad = Right(String(length, character) & strInput, length)
end function

i = 1

For Each objFile In objFolder.Files
    If LCase(objFSO.GetExtensionName(objFile.Name)) = "jpg" Then
      strFN = "XYZ" & LPad(i, 3, "0")
      objFSO.CreateFolder strFN
      objFSO.MoveFile objFile.Name, strFN & "\" & objFile.Name
      i = i + 1
    End If
Next

jmsdhn 發表於 2017-9-11 06:09

剛剛RUN過
發現執行作用上
應該是把R:\底下的所有JPG
有幾個JPG
就給幾個XYZ000資料夾
然後每個資料夾都只有一個JPG檔案
有上千個JPG就有上千個資料夾
恐怖!

"R:\"也可以換成"R:\AAA"
3也可以換成6等等
不過此VBS如果要可以作用成功
還必須讓此VBS放在該資料夾底下(如"R:\AAA")
或許在strFN & "\" & objFile.Name的"\"上?
這可能還要理解了
必較想讓VBS不要放在該資料夾內就可以執行

最近會想寫看看VBS
是發現它可以隱藏式執行
譬如在系統排程上
不論是剛開機時
或是正在執行其他工作時
都可以有別於BAT會出現視窗干擾
語言上似乎比PS1還簡單

其實個人在VBS的寫作還沒有到這麼複雜
像類似objFSO.GetExtensionName這樣的調用
或是Lpad這樣的宣告
個人還滿不認識的
或許可以把這些當成方向
再去研究
從有需要的指令開始研究可能比較有方向感吧

感謝教學!
頁: [1]
查看完整版本: [WSH] 如何判斷某類型檔案是否存在