2013-03-17 172 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