Скрипт 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
'...