'#sec:Main REPEAT PRINT ":"; LINEINPUT cmd$ cmd$ = SQUEEZE(cmd$) IF LEN(cmd$) = 0 THEN EXIT LOOP ENDIF SPLIT cmd$," ",cmd if 0 then ?UBOUND(cmd),cmd IF UBOUND(cmd) = 0 THEN cmd = [cmd(0),""] ENDIF if 0 then ?UBOUND(cmd),cmd c = cmd(0) IF c = "ls" THEN FOR ci = 1 TO UBOUND(cmd) PARSE cmd(ci) IF pflag THEN IF ci > 1 THEN INPUT "NEXT...",ans IF LCASE(LEFT(ans,1)) = "n" THEN EXIT FOR ENDIF ENDIF ENUM j = 0 FOR i = 0 TO fcount - 1 IF dir + flist(i) <> "MEMO:$$$DELETED$$$" THEN IF j MOD 12 = 0 THEN IF j > 0 THEN INPUT "MORE...",ans IF LCASE(LEFT(ans,1)) = "n" THEN EXIT FOR ENDIF ENDIF PRINT "List of ";spec ENDIF f = LEFT(flist(i),24) + IF(LEN(flist(i)) > 24,CHR(133),"") h = FREEFILE OPEN dir + flist(i) FOR INPUT AS #h PRINT LOF(h),f CLOSE #h j = j + 1 ENDIF NEXT IF j = 0 THEN PRINT "No files in ''";spec;"''" ENDIF ELSE PRINT "Invalid field: ''";cmd(ci);"''" ENDIF NEXT ELSEIF c = "cp" OR c = "mv" THEN IF UBOUND(cmd) < 2 THEN cmd = [cmd(0),cmd(1),""] ENDIF PARSE cmd(2) IF NOT pflag THEN PRINT "Invalid field: ''";cmd(2);"''" ELSE IF ("*" IN fn) OR ("?" IN fn) OR (spec = "MEMO:$$$DELETED$$$") THEN PRINT "Ambiguous destination" ELSE ddir = dir dfn = fn dspec = ddir + dfn PARSE cmd(1) IF NOT pflag THEN PRINT "Invalid field: ''";cmd(1);"''" ELSE ENUM j = 0 FOR i = 0 TO fcount - 1 sspec = dir + flist(i) IF sspec <> "MEMO:$$$DELETED$$$" THEN IF LEN(dfn) = 0 THEN dspec = ddir + flist(i) ENDIF IF sspec = dspec THEN PRINT "Cannot copy/move file to itself" ELSE IF EXIST(dspec) THEN INPUT "Overwrite ''" + dspec + "'' with ''" + sspec + "'' ";ans IF LCASE(LEFT(ans,1)) = "y" THEN ''KILL dspec ELSE c = "" ENDIF ENDIF IF c <> "" AND ddir = "MEMO:" AND dir <> "MEMO:" THEN h = FREEFILE OPEN sspec FOR INPUT AS #h IF LOF(h) > 3935 THEN PRINT "Too large for MEMO: ''";sspec;"''" c = "" ENDIF ENDIF IF c = "cp" THEN COPY sspec,dspec PRINT "Copied ''";sspec;"'' to ''";dspec;"''" j = j + 1 ELSEIF c = "mv" THEN RENAME sspec,dspec PRINT "Moved ''";sspec;"'' to ''";dspec;"''" j = j + 1 ENDIF ENDIF ENDIF NEXT IF j = 0 THEN PRINT "Nothing to copy" ENDIF ENDIF ENDIF ENDIF ELSEIF c = "del" THEN FOR ci = 1 to UBOUND(cmd) PARSE cmd(ci) IF pflag THEN ENUM j = 0 FOR i = 0 TO fcount - 1 f = dir + flist(i) IF f <> "MEMO:$$$DELETED$$$" THEN j = j + 1 INPUT "Delete ''" + f + "'' ";ans IF LCASE(LEFT(ans,1)) = "y" THEN KILL f PRINT "Deleted" ENDIF ENDIF NEXT IF j = 0 THEN PRINT "No files in ''";spec;"''" ENDIF ELSE PRINT "Invalid field: ''";cmd(ci);"''" ENDIF NEXT ELSEIF c = "nf" THEN FOR ci = 1 to UBOUND(cmd) PARSE cmd(ci) IF pflag THEN IF ("*" IN fn) OR ("?" IN fn) OR (spec = "MEMO:$$$DELETED$$$") THEN PRINT "Ambiguous field: ''";cmd(ci);"''" ELSE IF EXIST(spec) THEN INPUT "Replace ''" + spec + "'' ";ans IF LCASE(LEFT(ans,1)) <> "y" THEN c = "" ENDIF ENDIF IF c <> "" THEN h = FREEFILE OPEN spec FOR OUTPUT AS #h REPEAT PRINT ">"; LINEINPUT f IF LCASE(f) = "@eof" THEN EXIT LOOP ENDIF PRINT #h,f UNTIL CLOSE #h PRINT "Created ''";spec;"''" ENDIF ENDIF ELSE PRINT "Invalid field: ''";cmd(ci);"''" ENDIF NEXT ELSEIF c = "t" THEN FOR ci = 1 to UBOUND(cmd) PARSE cmd(ci) IF pflag THEN IF ci > 1 THEN INPUT "NEXT...",ans IF LCASE(LEFT(ans,1)) = "n" THEN EXIT FOR ENDIF ENDIF ENUM l = 0 FOR i = 0 TO fcount - 1 sspec = dir + flist(i) IF sspec <> "MEMO:$$$DELETED$$$" THEN IF l > 0 THEN INPUT "NEXT...",ans IF LCASE(LEFT(ans,1)) = "n" THEN EXIT FOR ENDIF ENDIF l = l + 1 h = FREEFILE OPEN sspec FOR INPUT AS #h k = 0 j = 0 hspec = LEFT(sspec,24) + IF(LEN(sspec) > 24,CHR(133),"") WHILE NOT EOF(h) LINEINPUT #h;f k = k + 1 f0 = STR(k) + "." + CHR(9) ans = 0 REPEAT IF j MOD 12 = 0 THEN IF j > 0 THEN INPUT "MORE...",ans ans = LCASE(LEFT(ans,1)) IF ans = "n" THEN EXIT LOOP ENDIF ENDIF PRINT "Listing of ''";hspec;"''" ENDIF cont = LEN(f) > 25 IF cont THEN f1 = LEFT(f,25) f = MID(f,26) ELSE f1 = f ENDIF PRINT f0;f1 f0 = CHR(9) j = j + 1 UNTIL cont = 0 IF ans = "n" THEN EXIT LOOP ENDIF WEND IF k = 0 THEN PRINT "No lines in ''";sspec;"''" ENDIF CLOSE #h ENDIF NEXT IF l = 0 THEN PRINT "No files in ''";spec;"''" ENDIF ELSE PRINT "Invalid field: ''";cmd(ci);"''" ENDIF NEXT ELSE PRINT "Unknown command: ''";c;"''" ENDIF UNTIL END SUB PARSE(field) LOCAL f,p SPLIT field,":",p if 0 then ?"field=''";field;"''","p=";p IF LEN(p) THEN IF UBOUND(p) = 0 THEN IF ":" IN field THEN p = [p(0),""] ELSE p = ["",p(0)] ENDIF ENDIF ELSE p = ["",""] ENDIF if 0 then ?"field=''";field;"''","p=";p dir = p(0) f = LCASE(LEFT(dir,1)) IF f = "m" THEN dir = "MEMO:" ELSEIF f = "p" OR f = "d" THEN dir = "PDOC:" ELSEIF LEN(dir) > 0 THEN pflag = 0 EXIT FUNC ENDIF fn = p(1) IF LEN(fn) > 0 THEN mask = fn ELSE mask = "*" ENDIF spec = dir + mask if 0 then ?"dir=''";dir;"''";" fn=''";fn;"''";" mask=''";mask;"''";" spec=''";spec;"''" pflag = 1 END SUB ENUM flist = FILES(spec) fcount = LEN(flist) if 0 then ?"fcount=";fcount;" flist=";flist END '