
Load each file into separate data folder


hrodstein
#pragma rtGlobals=3 // Use modern global access method and strict wave access. // This is a general framework for loading waves from multiple files, with the waves from // each file stored in a separate data folder. // // This is useful when you have many similar files, each of which containing many columns. // You wind up with one data folder for each file. The wave names in each data folder are the same. // The data folder name identifies the source file. // // You need to supply your LoadWave command where it says // "*** Put your LoadWave command here ***" // Other changes may be required for your situation. static StrConstant kFileNameExtension = ".txt" Function LoadOneFile(pathName, fileName) String pathName // Name of symbolic path or "" for dialog String fileName // Name of data file or "" for dialog Variable refNum // First get a valid reference to a file. if ((strlen(pathName)==0) || (strlen(fileName)==0)) // Display dialog looking for file. Open/D/R/P=$pathName/M="Select data file" refNum as fileName fileName = S_fileName // S_fileName is set by Open/D if (strlen(fileName) == 0) // User cancelled? return -1 endif endif // Create data folder from file name String dfName = ParseFilePath(0, fileName, ":", 1, 0) dfName = RemoveEnding(dfName, kFileNameExtension) // e.g., "MyFile.txt" -> "MyFile" if (DataFolderExists(dfName)) String prompt sprintf prompt, "Data folder named '%s' exists. Click Yes to overwrite the existing data, No to cancel.", dfName DoAlert 1, prompt if (V_flag == 2) Print "Load cancelled. You can rename the existing data folder and try again." return -1 // Cancelled endif SetDataFolder $dfName else NewDataFolder/S $dfName endif String dataSetName = dfName *** Put your LoadWave command here *** SetDataFolder :: // Restore current data folder return 0 // Success End Function LoadAllFilesInFolder() String thePath="_New Path_" Prompt thePath, "Name of path containing data files", popup PathList("*", ";", "")+"_New Path_" DoPrompt "Choose directory containing a set of data files", thePath if (V_flag != 0) return -1 // User cancelled. endif if (CmpStr(thePath, "_New Path_") == 0) // User selected new path ? NewPath/O data // This brings up dialog and creates or overwrites path if (V_flag != 0) return -1 // User cancelled endif thePath = "data" endif PathInfo $thePath String dirPath = S_path String fileList = IndexedFile($thePath, -1, kFileNameExtension) // List of all files in the folder String fileName Variable fileIndex=0 String list = "" do fileName = StringFromList(fileIndex, fileList) // Get name of next text file in path if (strlen(fileName) == 0) break // All done endif if (LoadOneFile(thePath, fileName) != 0) break // Error endif fileIndex += 1 while (1) // Until all files done Printf "Loaded data from \"%s\"\r", dirPath return 0 // Success End

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More