CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4

Hybrid View

  1. #1
    Join Date
    Nov 2018
    Posts
    2

    Script error and says no files to process

    HI

    I have the follwoing script and it runs as in transferring files from the folders called test to split but then it keeps telling me there no files to process.

    What have I done wrong as there are files in the folder called split.

    Any Ideas?

    Thanks

    HTML Code:
    HTML Code:
    Option Explicit
    
    Private Sub SomeSub()
    Dim fso
     
    ' Global variables
    Dim strBaseDir, strDestDir
    Dim objFSO, objFile
    Dim arrFiles(), i
    Dim lngFolderSize, intFolderNumber, strNextDir, intMoveFile
    
    ' Define paths to work with
    strBaseDir = "C:\Users\g\Desktop\test"
    strDestDir = "C:\Users\g\Desktop\split"
    strPlayer = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
    
    ' Set maximum size of new folders
    Const cMaxFolderSize = 4294967296#
    
    ' Define class that will hold file information
    Class File
        Public lngSize
        Public strPath
    End Class
    
    ' Create file system object
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    
    ' Fully resolve paths
    strBaseDir = objFSO.GetAbsolutePathname(strBaseDir)
    strDestDir = objFSO.GetAbsolutePathname(strDestDir)
    strPlayer = objFSO.GetAbsolutePathname(strPlayer)
    
    ' Make sure the folders exists, exit if not
    If Not objFSO.FolderExists(strBaseDir) Then
        WScript.Echo "*ERROR* Folder does not exist: """ & strBaseDir & """."
        WScript.Quit
    End If
    If Not objFSO.FolderExists(strDestDir) Then
        WScript.Echo "*ERROR* Folder does not exist: """ & strDestDir & """."
        WScript.Quit
     End If
     
    ' Initialize array index variable
    i = -1
    
    ' Load info for each file into array (using File class)
    For Each objFile In objFSO.GetFolder(strBaseDir).Files
        ' Don't include any files with size greater than max allowed in a folder
        If objFile.Size > cMaxFolderSize Then
            WScript.Echo "*WARNING* Skipping file: """ & objFile.Path & """, size:""" & objFile.Size & """ exceeds maximum folder size:""" & cMaxFolderSize & """."
        Else
            ' Add another element to the array of type File class
            i = i + 1
            ReDim Preserve arrFiles(i)
            Set arrFiles(i) = New File
    
            ' Store the size and full path to the file
            arrFiles(i).strPath = objFile.Path
            arrFiles(i).lngSize = objFile.Size
        End If
    Next
    
    ' If no files found then exit
    If i = -1 Then
        WScript.Echo "*WARNING* No files found to process."
        WScript.Quit
    End If
    
    ' Sort the files arrary by size in descending order
    SortArray arrFiles
    
    ' Process all files moving to new subfolders until done
    intFolderNumber = 0
    Do
        ' Start a new destination folder and create it (MUST NOT ALREADY EXIST)
        lngFolderSize = cMaxFolderSize
        intFolderNumber = intFolderNumber + 1
        strNextDir = strDestDir & "\" & intFolderNumber & "\"
        objFSO.CreateFolder strNextDir
    
        ' Move files to dest folder until full
        Do
            ' Look for the largest file left that will fit in remaining space
            intMoveFile = GetFileToMove(arrFiles, lngFolderSize)
    
            ' If we found another file to move then move it
            If intMoveFile <> -1 Then
    Dest:          [" & intFolderNumber & "] , Available: [" & lngFolderSize & "] , File: [" & arrFiles(intMoveFile).strPath & "] , Size: [" & arrFiles(intMoveFile).lngSize & "]
                objFSO.MoveFile arrFiles(intMoveFile).strPath, strNextDir
                lngFolderSize = lngFolderSize - arrFiles(intMoveFile).lngSize
                arrFiles(intMoveFile).lngSize = -1
            End If
        Loop Until intMoveFile = -1
    
        ' Add player file
        objFSO.CopyFile strPlayer, strNextDir
    
    Loop Until AllFilesMoved(arrFiles)
    
    End Sub
    
    Function GetFileToMove(ByRef arrArray(), lngSize)
        ' Find next largest file to move that fits, -1 if none found
        Dim i
        GetFileToMove = -1
        For i = LBound(arrArray) To UBound(arrArray)
            If arrArray(i).lngSize <> -1 Then
                If arrArray(i).lngSize <= lngSize Then
                    GetFileToMove = i
                End If
                Exit Function
            End If
        Next
    End Function
    
    Function AllFilesMoved(ByRef arrArray())
        ' See if all files have been moved
        Dim i
        AllFilesMoved = True
        For i = LBound(arrArray) To UBound(arrArray)
            If arrArray(i).lngSize <> -1 Then
                AllFilesMoved = False
                Exit Function
            End If
        Next
    End Function
    
    Sub SortArray(ByRef arrArray())
        ' Sort array of files by size, descending order (simple bubble sort)
        Dim i, j, intTemp
        For i = LBound(arrArray) To UBound(arrArray)
            For j = LBound(arrArray) To UBound(arrArray) - 1
    '            If arrArray(j).lngSize < arrArray(j + 1).lngSize Then
                If LCase(arrArray(j).strPath) > LCase(arrArray(j + 1).strPath) Then
                    Set intTemp = arrArray(j + 1)
                    Set arrArray(j + 1) = arrArray(j)
                    Set arrArray(j) = intTemp
                    Set intTemp = Nothing
                End If
            Next
        Next
    End Sub

  2. #2
    Arjay's Avatar
    Arjay is offline Moderator / EX MS MVP Power Poster
    Join Date
    Aug 2004
    Posts
    13,490

    Re: Script error and says no files to process

    Can't you debug and step through the code to find out why it isn't working?

  3. #3
    Join Date
    Jul 2008
    Location
    WV
    Posts
    5,362

    Re: Script error and says no files to process

    You say there are files in the directory called split but that is not the one you are looking for the files in

    Your code sets the base directory to
    "C:\Users\g\Desktop\test"

    And that is where it is expecting to find files, I assume they are to be moved to the split folder which is set as the destination folder in the code.
    Always use [code][/code] tags when posting code.

  4. #4
    Join Date
    Nov 2018
    Posts
    2

    Re: Script error and says no files to process

    yeah my error apologies it all sorted .

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured