2013-03-17 125 views
0

基本守則:由Ekkehard.Horner &適於通過我 我 發現 的 代碼, 感謝所有。 Dim oShell,frequency,sFile Dim goFS:Set goFS = CreateObject(「Scripting.FileSystemObject」) Dim oSrcDir:Set oSrcDir = goFS.GetFolder(「C:\ Temp1」) Dim sDstDir:sDstDir =「C:\ Temp2 「 昏暗OFILE,NINC,sNFSpecVB腳本重命名文件addind日期和時間命名?

Set oShell = CreateObject("WScript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.GetFolder("C:\Temp1") 
Set fc = f.Files 

frequency = 10 * 1000 
Const cnMax = 99 


WScript.Sleep frequency 

theDate = Year(Now()) _ 
     & Right(String(2,"0") & month(Now()),2) _ 
     & Right(String(2,"0") & Day(Now()),2) 


For Each f1 in fc 
    If right(lcase(f1.name),4) = ".pdf" then 
theBaseName = fso.GetBaseName(f1.name) 
theExtension = fso.GetExtensionName(f1.Name) 
f1.Move(fso.GetParentFolderName(f1.path) & "\" & theBaseName & "_" & EID & "_" &   theDate & "." & theExtension) 
    End If 
    Next 

For Each oFile In oSrcDir.Files 
If right(lcase(oFile.name),4) = ".pdf" Then 
    nInc = 0 
    sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) 
    Do While goFS.FileExists(sNFSpec) And nInc <= cnMax 
    sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) 
Loop 
If nInc > cnMax Then 
    Else 
    oFile.Move sNFSpec 
End If 

End If 
Next 
Wend 

} 





Dim oShell, frequency, sFile 
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") 
Dim oSrcDir : Set oSrcDir = goFS.GetFolder("C:\Temp1") 
Dim sDstDir : sDstDir  = "C:\Temp2" 
Dim oFile, nInc, sNFSpec 

Set oShell = CreateObject("WScript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.GetFolder("C:\Temp1") 
Set fc = f.Files 

frequency = 10 * 1000 
Const cnMax = 99 


WScript.Sleep frequency 

theDate = Year(Now()) _ 
     & Right(String(2,"0") & month(Now()),2) _ 
     & Right(String(2,"0") & Day(Now()),2) 


For Each f1 in fc 
    If right(lcase(f1.name),4) = ".pdf" then 
theBaseName = fso.GetBaseName(f1.name) 
theExtension = fso.GetExtensionName(f1.Name) 
f1.Move(fso.GetParentFolderName(f1.path) & "\" & theBaseName & "_" & EID & "_" &   theDate & "." & theExtension) 
    End If 
    Next 

For Each oFile In oSrcDir.Files 
If right(lcase(oFile.name),4) = ".pdf" Then 
    nInc = 0 
    sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) 
    Do While goFS.FileExists(sNFSpec) And nInc <= cnMax 
    sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) 
Loop 
If nInc > cnMax Then 
    Else 
    oFile.Move sNFSpec 
End If 

End If 
Next 
Wend 

} 

回答

1

最簡單的解決辦法是由它本身運行另一個腳本運行的任務‘永遠’(抽象)。

Dim oShell, frequency, sFile 

Set oShell = CreateObject("WScript.Shell") 
frequency = 10 * 1000 '10 Seconds (just for example) 
sFile  = "task.vbs" 'the script you want to run 

While True 'make infinite cycle 
    WScript.Sleep frequency 
    oShell.Run sFile 
Wend 
0

提出的解決方案Panayot Karabakalov也可以集成到現有的腳本:

'... 

While True 
    For Each oFile In oSrcDir.Files 
    '... 
    Next 
    WScript.Sleep 30000 'milliseconds 
Wend 

'... 

另一個變化是使用無條件Do ... Loop代替While True ... Wend

'... 

Do 
    For Each oFile In oSrcDir.Files 
    '... 
    Next 
    WScript.Sleep 30000 'milliseconds 
Loop 

'... 
+0

的確非常感謝既爲您的答案,同時我發現第二個腳本在別的地方,一切由我自己;) – CheckDbl 2013-03-22 19:21:26

+0

但腳本已演變現在,如果nyone可以幫助這一個,這將是偉大的...下面的VBScript查找PDF文件每10秒只,如果找到,他重新命名所有的PDF文件添加從DB索引中找到的表索引中的DATE和ExternalID。 mdb根據名稱列。當我輸入SQL查詢'test'時它工作正常,但是重命名具有相同EID,ExternalID的每個PDF文件。我首先需要幫助檢查index.mdb是否存在,如果它存在,那麼獲取每個文件EID的外部ID,並相應地爲每個文件重新命名。 – CheckDbl 2013-03-22 19:32:02

+0

這是一個新問題。 – 2013-03-22 19:44:18