Question

I have a problem. I need to throw some synchronized commands in vbscript (one Run method, Delete one and moveFile one) in every cycle to my loop. I don't know how I do it.

My code is that:

Public Function UnificarCRIs(ByVal path, ByVal FICRIEC, ByVal sessio, ByVal CIBAA)
    Dim objFile, objCurrentFolder, filesys, origenFitxers
    Dim FileName, WshShell

    On error resume next

    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objCurrentFolder = filesys.getFolder(path)

    For Each objFile In objCurrentFolder.Files
        FileName = objFile
        If (right(FileName, 4) = ".cri") Then
            If filesys.FileExists(path & FICRIEC & sessio) Then
                 'WshShell.Run ("copy " & path & FICRIEC & sessio & "+" & FileName & " " & path & FICRIEC & sessio & "_tmp")
                 WshShell.run ("cmd /K " & "copy /Y " & path & FICRIEC & sessio & "+" & FileName & " " & path & FICRIEC & sessio & "_tmp",8,TRUE)
                 Set WshShell = Nothing
                 filesys.DeleteFile path & FICRIEC & sessio
                'filesys.MoveFile path & FICRIEC & sessio & "_tmp", path & FICRIEC & sessio
            Else
                WshShell.run "cmd /K " & "copy /Y " & FileName & " " & path & FICRIEC & sessio,8,TRUE
                Set WshShell = Nothing
            End If     
        End If 
    Next

End Function
Was it helpful?

Solution

Read the docs for .Run completely and reflect on the bWaitOnReturn parameter.

Apology:

Sorry, I didn't read your code carefully enough. The .Run should wait. But I see that you use a global On Error Resume Next and param list () in

WshShell.run ("cmd /K " & "copy /Y " & path & FICRIEC & sessio & "+" & FileName & " " & path & FICRIEC & sessio & "_tmp",8,TRUE)

What happens, when you remove those mistakes? Are you sure, that you have a usable WshShell in the second pass thru the loop?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top