Retrieving/Picking files from Directory through X++
Following piece of code to pick all files from a directory. static void readFromDirectory(Args _args) { #Evat_NL #File // variable declration to retrieve files from folder Filename baseFolder; Filename pdfFilename; Filename foundBaseFileName; Filename foundFileName; container mainFolder, subFolder, fileContainer; boolean filesFoundMainFolder = true; boolean filesFoundSubFolder = true; int apiResult; int startTime, endTime, fileCounter; RecordInsertList recordList = null; int setCurrentFolder (Filename _filename = ”) { ; return WinAPI::setCurrentDirectory(_filename); } ; baseFolder = @”C:Testinvoices”; // Reading all pdf invoices from a directory apiResult = setCurrentFolder(SysTreeNode::duplicatePathDelimiters(baseFolder)); mainFolder = WinAPI::findFirstFile(“*.pdf*”); foundBaseFileName = conpeek(mainFolder, 2); startTime = WinAPI::getTickCount(); while (filesFoundMainFolder) { if (foundBaseFileName != #currentFolder && foundBaseFileName != #upFolder && foundBaseFileName != ”) { // Concatenating each file with base folder to get full path // For example; C:TestinvoicesInvoice1.pdf pdfFilename = baseFolder + foundBaseFileName; fileCounter++; } apiResult = setCurrentFolder(SysTreeNode::duplicatePathDelimiters(baseFolder)); foundBaseFileName = WinAPI::findNextFile(conpeek(mainFolder, 1)); filesFoundMainFolder = foundBaseFileName ? true : false; } endTime = WinAPI::getTickCount(); info(strFmt(‘It took %1 minutes to read %2 pdf files’, ((endTime – startTime)/1000)/60, fileCounter)); }