Script error and says no files to process RRS feed

  • Question

  • HI

    I have the followig 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?


    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 & """."
    End If
    If Not objFSO.FolderExists(strDestDir) Then
        WScript.Echo "*ERROR* Folder does not exist: """ & strDestDir & """."
     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 & """."
            ' 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
    ' If no files found then exit
    If i = -1 Then
        WScript.Echo "*WARNING* No files found to process."
    End If
    ' Sort the files arrary by size in descending order
    SortArray arrFiles
    ' Process all files moving to new subfolders until done
    intFolderNumber = 0
        ' 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
            ' 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
    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
    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
    End Sub
    • Moved by Bill_Stewart Thursday, March 14, 2019 8:40 PM This is not "fix/debug/rewrite my script for me" forum
    Friday, November 16, 2018 5:51 PM

All replies

  • You will have to ask the author of this script for help.  We do not fix scripts found on the Internet.

    The most obvious answer is that no files were found to process.

    A quick look at the code tells me that there is no way to even get that as an output.  The script has no entry point.  It is just a library of functions.

    Did you lose some of the script.  Ask the author to help you fix this.


    Friday, November 16, 2018 6:10 PM
  • There are also numerous syntax and logic errors.  This code can never run.


    Friday, November 16, 2018 6:15 PM