Скрипт VB переименовывает файлы addind Date & Time to Name?

Базовый код: Ekkehard.Horner и адаптированный мной, я нашел код, спасибо всем. Dim oShell, частота, sFile Dim goFS: установить goFS = CreateObject("Scripting.FileSystemObject") Dim oSrcDir: установить oSrcDir = goFS.GetFolder("C:\Temp1") Dim sDstDir: sDstDir = "C:\Temp2" oim, 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

}





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

}

2 ответа

Наиболее простым решением было бы запустить вашу задачу из другого скрипта, который сам по себе запускается "навсегда" (абстракция).

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

Предложенное Панайотом Карабакаловым решение также может быть включено в существующий сценарий:

'...

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

'...
Другие вопросы по тегам