Michael Grunditz writes: > How do I do a recursive delete in qdos ?
With extreme care!! Requires TK2. Per 1 REMark Example: CLS: DELETE_DIRECTORY 'ram2_', 'topdir', 1 2 : 10 REMark DELETE_DIRECTORY 11 REMark S*BASIC PROCedure to delete an 12 REMark entire directory tree 13 REMark Requires tk2 or equivalent 14 REMark P Witte 1998 15 REMark Use at own risk! No warranties! 16 REMark Parameters: 17 REMark dev$ = device; eg win1_, ram2_ 18 REMark dir$ = directory; eg temp_ 19 REMark tree: 0: files in this dir only 20 REMark <>0: all sub-dirs and files 21 : 1000 DEFine PROCedure DELETE_DIRECTORY(dev$, dir$, tree) 1010 LOCal c%, t%, pos, ch%(18), n$(36) 1020 n$ = dir$: c% = 0 1030 REPeat dir_loop 1040 ch%(c%) = FOP_DIR(dev$ & n$) 1050 IF ch%(c%) < 0: Action 'Error', ch%(c%) 1060 pos = -64 1070 REPeat file_loop 1080 pos = pos + 64 1090 IF pos >= FLEN(#ch%(c%)) THEN 1100 n$ = FNAME$(#ch%(c%)): CLOSE#ch%(c%) 1110 IF tree: Action 'Deleting', 1 1120 c% = c% - 1: IF c% < 0: EXIT dir_loop 1130 pos = INT(FPOS(#ch%(c%)) / 64) * 64 1140 ELSE 1150 GET#ch%(c%)\ pos + 14; n$ 1160 IF LEN(n$) > 0 THEN 1170 BGET#ch%(c%)\ pos + 5; t% 1180 IF t% = 255 THEN 1190 IF tree THEN 1200 Action 'Checking', 2 1210 c% = c% + 1: EXIT file_loop 1220 END IF 1230 ELSE 1240 Action 'Deleting', 0 1250 END IF 1260 END IF 1270 END IF 1280 END REPeat file_loop 1290 END REPeat dir_loop 1300 END DEFine 1310 : 2000 DEFine PROCedure Action(tx$, type) 2010 IF CODE(INKEY$(#0; 0)) = 27: CLOSE: ERT -1 2020 IF type THEN 2030 PRINT \ tx$! dev$; n$! '->' 2040 IF type < 0: CLOSE: ERT type 2050 IF type = 1: DELETE dev$ & n$ 2060 ELSE 2070 PRINT tx$! n$ 2080 DELETE dev$ & n$ 2090 END IF 2100 END DEFine 2110 :
