請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Login

搜索
回覆 2則 瀏覽 511篇

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

該用戶從未簽到

發表於 2017-9-10 07:30 | 顯示全部樓層 |閱讀模式
本帖最後由 jmsdhn 於 2017-9-10 07:50 編輯

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

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

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

謝謝指教!




該用戶從未簽到

發表於 2017-9-10 23:17 | 顯示全部樓層
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. Set objFolder = objFSO.GetFolder("R:\")

  3. Function Lpad(strInput, length, character)
  4.     Lpad = Right(String(length, character) & strInput, length)
  5. end function

  6. i = 1

  7. For Each objFile In objFolder.Files
  8.     If LCase(objFSO.GetExtensionName(objFile.Name)) = "jpg" Then
  9.         strFN = "XYZ" & LPad(i, 3, "0")
  10.         objFSO.CreateFolder strFN
  11.         objFSO.MoveFile objFile.Name, strFN & "\" & objFile.Name
  12.         i = i + 1
  13.     End If
  14. Next
複製代碼

使用道具

該用戶從未簽到

 樓主| 發表於 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這樣的宣告
個人還滿不認識的
或許可以把這些當成方向
再去研究
從有需要的指令開始研究可能比較有方向感吧

感謝教學!

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

Discuz! X

© 2009-2017 Microduo

快速回覆 返回頂部 返回列表