Search code examples
filebatch-processingaxaptadynamics-ax-2012x++

How to get file in folder in batch process?


I have to get file in a folder. My process can work in Batch.

My code is this:

Io                  file;
FileIoPermission    perm;
int handle;
Filename fileName;

[handle, filename]  = WINAPI::findFirstFile( myFilePatch + "\\*.txt");

fileOpen = strFmt (myFilePatch  + "\\" +  filename);

if (filename)
{
   perm = new FileIoPermission(filename, 'r');
   perm.assert();
   file = new TextIo(filename, 'r', 65001);
}

//etc... other code
// I go on to find another file

filename    =   WinAPI::findNextFile(handle);
fileOpen = strFmt (myFilePatch  + "\\" +  filename);

if (filename)
{
    // open file....
}

My problem is for WinAPI.findFirstFile and WinAPI::findNextFile I have an error. How can I search in a folder,in batch process, the files ?

Thansk all,

enjoy!


Solution

  • Use System.IO.DirectoryInfo and loop through the files with a for-loop. Just replace the folder path below with your folder' location, and it will generate a list of all the files inside the folder.

    static void loopDirectory(Args _args)
    {
        System.IO.DirectoryInfo     directory;
        System.IO.FileInfo[]        files;
        System.IO.FileInfo          file;
        InteropPermission           permission;
        Filename                    tmpFilePath;
        Filename                    tmpFileNameShort;
        Filename                    tmpFileExt;
    
        str         fileNameTemp;
        counter     filesCount;
        counter     loop;
    
        permission  = new InteropPermission(InteropKind::ClrInterop);
        permission.assert();
    
        directory   = new System.IO.DirectoryInfo(@"C:\Users...");
        files       = directory.GetFiles();
        filesCount  = files.get_Length();
    
        for (loop = 0; loop < filesCount; loop++)
        {
            file                                        = files.GetValue(loop);
            fileNameTemp                                = file.get_FullName();
            [tmpFilePath, tmpFileNameShort, tmpFileExt] = fileNameSplit(fileNameTemp);
    
            info(tmpFileNameShort);
        }
        CodeAccessPermission::revertAssert();
    }