RAPID:Removing a directory with contents
Hello,
I'm needing a way to delete my backups folder. I have way too many robots to walk around deleting backups every month, I want to clear out the folder on a schedule. I already know how I want to do the schedule, I just can't figure out how to delete the files since RemoveDir only works on empty directories. I tried using a while loop and IsFile but I ran into the problem of not knowing how many subdirectories there will be. Here's how the controller files are stored:
hd0a/BACKUP/*All Backups are Here*
Some robots contain only 1-5 backups in the Backup folder, but some have 10+
I need a way to delete all of these with Rapid Code. Thank you!
Here is what I have so far. Deleting files is easy. Deleting an unknown amount of subdirectories with contents is hard:
I'm needing a way to delete my backups folder. I have way too many robots to walk around deleting backups every month, I want to clear out the folder on a schedule. I already know how I want to do the schedule, I just can't figure out how to delete the files since RemoveDir only works on empty directories. I tried using a while loop and IsFile but I ran into the problem of not knowing how many subdirectories there will be. Here's how the controller files are stored:
hd0a/BACKUP/*All Backups are Here*
Some robots contain only 1-5 backups in the Backup folder, but some have 10+
I need a way to delete all of these with Rapid Code. Thank you!
Here is what I have so far. Deleting files is easy. Deleting an unknown amount of subdirectories with contents is hard:
Post edited by SpencerXZ on
0
Comments
-
Hi,
You can recursively delete all the files in a sub-directory and then delete the sub-directory. Some remarks
- You are not using the "IsFile" function correctly. According to the manual: "When no type is specified, it returns TRUE if the file exists and otherwise FALSE. So this is not the correct way to distinguish between a file and directory.
- Furthermore the functions support full or relative paths. Relative often means with respect to current working directory. So in theory it will work correctly, but with my virtual controller it was sometimes looking in "C:/" and not in the correct path...
Here an example how you can implement it...PROC RemoveDirWithContent(string Path) VAR dir Dev; VAR string FileName; ! Open directory OpenDir Dev, Path; ! Get contents of directory WHILE ReadDir(Dev, FileName) DO ! Check if is file IF IsFile(FileName \Directory) THEN IF FileName <> "." AND FileName <> ".." THEN ! Recursively delete content in sub-dir RemoveDirWithContent(Path+"/"+FileName); ! Remove sub-dir RemoveDir(Path+"/"+FileName); ENDIF ELSE ! Remove File RemoveFile(Path+"/"+FileName); ENDIF ENDWHILE ! Close Dir CloseDir Dev; ERROR TRYNEXT; ENDPROC PROC Main() RemoveDirWithContent("HOME:/Test"); ENDPROC
1
Categories
- All Categories
- 5.5K RobotStudio
- 395 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 310 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings