5 CLS:ON ERROR GOTO 120:DIM A$(512,1),W(512,1):V$="C:\*.*":U$="*.*":Z$=U$:X$=COMMAND$:R$=" >":Y$=REPEAT$(21,""):H=1:PRINT TAB(40)"":PRINT""Y$""Y$"" 10 LOCATE 3,1:FOR N=0 TO 20:PRINT TAB(9)""TAB(31)""TAB(72)"":NEXT:PRINT TAB(9)""Y$"Fehler"Y$"":PRINT TAB(9)""TAB(72)""; 15 COLOR 11:LOCATE 5,35:PRINT">FILEMASTER<":LOCATE 7,35:PRINT"(C)opyright":LOCATE 8,39:PRINT"1994":LOCATE 9,35:PRINT"C.E.Software":COLOR 3:LOCATE 11,35:PRINT"programmiert" 20 LOCATE 12,39:PRINT"von":LOCATE 13,37:PRINT"Carsten":LOCATE 14,36:PRINT"Engelmann":COLOR 8:LOCATE 17,34:PRINT"Anleitung":COLOR 7:GOSUB 220:IF X$="" THEN X$=Z$ 25 K=0:A=0:T$=UCASE$(X$) 30 IF MID$(T$,2,1)=":" THEN W$=LEFT$(T$,1):CHDRIVE W$:T$=MID$(T$,3) 35 FOR N=LEN(T$) TO 1 STEP-1:IF MID$(T$,N,1)="\" THEN W$=LEFT$(T$,N-1):CHDIR W$+"\.":T$=MID$(T$,N+1) ELSE NEXT 40 ON-(Y$=CHR$(9))GOTO 70:Y$=CURDIR$:LOCATE 1,L*41+1:PRINT LEFT$(Y$+REPEAT$(36,""),39):Z$=T$:IF RIGHT$(Y$,1)="\" THEN S$=Y$+Z$ ELSE S$=Y$+"\"+Z$ 45 Z=0:IF MID$(CURDIR$,2)<>":\" THEN Z=1:A$(0,L)=".." 50 Y$=DIR$(Z$,55):FOR N=Z TO 512:ON-(Y$="")GOTO 60:M=INT(ATTRIB(Y$)/16):IF M=1 OR M=3 THEN Y$=Y$+R$ 55 A$(N,L)=Y$:Y$=DIR$:NEXT 60 D=1:IF N=0 THEN G=-1:J=1:A=0:F=0:K=0:GOTO 70 ELSE G=N-1:J=0 62 FOR N=0 TO G-1:FOR E=N+1 TO G:IF A$(N,L)>A$(E,L) THEN SWAP A$(N,L),A$(E,L):SWAP W(N,L),W(E,L) 65 NEXT E,N 70 LOCATE 3:FOR N=K TO K+20:LOCATE,L*41+11:IF N>G THEN PRINT SPACE$(19):GOTO 85 ELSE IF A=N THEN F=N-K:W$=A$(A,L):COLOR 0,7-W(N,L) ELSE COLOR 7-W(N,L),0 80 Y$=EXTRACT$(A$(N,L),ANY". "):PRINT LEFT$(STR$(N+1)+". ",6)Y$SPACE$(8-LEN(Y$))LEFT$(LTRIM$(A$(N,L),Y$)+" ",5):COLOR 7,0 85 NEXT 90 Y$=INKEY$:Q$=MID$(Y$,2):ON J GOTO 97:ON-(Q$="H")GOTO 150:ON-(Q$="P")GOTO 160:ON-(Q$="I")GOTO 170:ON-(Q$="Q")GOTO 180:ON-(Q$="=" AND W$<>"..")GOTO 335:ON-(Q$="S")GOTO 260 95 ON-(Q$="<" OR Q$="R")GOTO 245:ON-(Q$=">")GOTO 330:ON-(Y$=CHR$(13))GOTO 105:IF Y$=" " AND W$<>".." THEN W(A,L)=1-W(A,L):GOTO 160 97 ON-(Q$=";")GOTO 380:IF Y$=CHR$(27) THEN X$=Z$:GOTO 345 ELSE IF Y$=CHR$(9) THEN ON-(J=0)GOSUB 190:SWAP Z$,U$:SWAP S$,V$:T$=S$:SWAP J,Q:SWAP K,V:SWAP A,C:SWAP L,H:SWAP G,P:SWAP Z,O:GOTO 30 ELSE IF Q$="-" THEN CLS:END 100 ON-(Y$<"a" OR Y$>"z")GOTO 90:ON-(J=0)GOSUB 190:X$=Y$+":"+Z$:FOR E=Z TO G:W(E,L)=0:NEXT:GOTO 25 105 Y$=LTRIM$(W$,EXTRACT$(W$,ANY". ")):IF Y$=".EXE" OR Y$=".COM" OR Y$=".BAT" THEN EXECUTE W$ ELSE ON-(Y$<>R$ AND Y$<>"..")GOTO 110:ON-(J=0)GOSUB 190:T$=RTRIM$(W$,R$)+"\"+Z$:K=0:A=0:FOR E=Z TO G:W(E,L)=0:NEXT:GOTO 35 110 Y$=W$+": Datei nicht ausfhrbar":ERROR 1 120 E=ERR:IF E=76 THEN IF MID$(T$,2,1)=":" THEN E=71:GOTO 122 ELSE Y$=W$+": Verzeichnis existiert nicht":CHDRIVE LEFT$(S$,1) 122 IF E=71 THEN Y$=W$+": Laufwerk nicht bereit":CHDRIVE LEFT$(S$,1) 125 IF E=75 THEN IF I=2 THEN IF Y$=R$ THEN Y$="Erst Unterverzeichnis lschen":E=0 ELSE Y$=W$+": Datei geschtzt. Trotzdem lschen?" ELSE Y$=RTRIM$(W$,R$)+": Verzeichnis existiert schon":IF I=1 THEN Y$=Y$+". berschreiben?" ELSE E=0 132 IF E=53 THEN Y$=W$+": Datei versteckt. Trotzdem lschen?":E=75 ELSE IF E=58 THEN Y$=W$+": Datei existiert schon":IF I=1 THEN Y$=Y$+". berschreiben?":E=75 135 LOCATE 25,INT((82-LEN(Y$))/2):COLOR 4:SOUND 1200,1:PRINT Y$;:COLOR 7 137 Y$=INKEY$:ON-(E=75 AND Y$<>"j" AND Y$<>"n")GOTO 137:ON-(E<>75 AND Y$<>CHR$(27))GOTO 137:LOCATE,14:PRINT SPACE$(53);:ON-(Y$="j" AND E=75)GOTO 140:RESUME 145 140 IF I=1 THEN RESUME NEXT ELSE ATTRIB W$,0:RESUME 145 ON-(D=0)GOTO 345:I=0:GOSUB 235:GOTO 62 150 IF A=0 THEN A=G:K=G-20:ON-(K>-1)GOTO 70:K=0 ELSE A=A-1:IF AG-20 THEN A=G:IF G<21 THEN K=0 ELSE K=G-20 185 GOTO 70 190 COLOR 7-W(A,L),0:LOCATE F+3,L*41+11:T$=EXTRACT$(W$,ANY". "):PRINT LEFT$(STR$(A+1)+". ",6)T$SPACE$(8-LEN(T$))LEFT$(LTRIM$(W$,T$)+" ",5):COLOR 7:RETURN 195 E=0:B=1:LOCATE F+3,N,1,5,7 200 Y$=INKEY$:IF Y$=CHR$(8) AND B>1 THEN X$=LEFT$(X$,B-2)+MID$(X$,B):LOCATE,N:PRINT X$"";:B=B-1:LOCATE,B-1+N ELSE T$=MID$(Y$,2):IF T$="S" AND BB-1 THEN LOCATE,N+B:B=B+1 ELSE IF T$="K" AND B>1 THEN LOCATE,N+B-2:B=B-1 ELSE IF T$="R" THEN E=1-E:LOCATE,,,5-E*5,7 ELSE IF T$="O" THEN B=LEN(X$)+1:LOCATE,N+B-1 ELSE IF T$="G" THEN LOCATE,N:B=1 210 IF Y$=CHR$(13) THEN LOCATE,,0:RETURN ELSE IF Y$=CHR$(27) THEN LOCATE,,0:T$=X$:RETURN 40 ELSE ON-(Y$<" " OR Y$>"" OR B>M)GOTO 200 215 X$=UCASE$(LEFT$(X$,B-1)+Y$+MID$(X$,B+E,M-B)):LOCATE,N:PRINT X$;:LOCATE,N+B:B=B+1:GOTO 200 220 O=0:T$=RTRIM$(V$,U$):IF MID$(T$,2)<>":\" THEN O=1:Y$=RTRIM$(T$,"\"):A$(0,H)=".." ELSE Y$=T$ 225 LOCATE 1,H*41+1:PRINT LEFT$(Y$+REPEAT$(36,""),39) 227 Y$=DIR$(V$,55):FOR N=O TO 512:ON-(Y$="")GOTO 233:M=INT(ATTRIB(T$+Y$)/16):IF M=1 OR M=3 THEN Y$=Y$+R$ 230 A$(N,H)=Y$:Y$=DIR$:NEXT 233 P=N-1 235 FOR N=0 TO P-1:FOR E=N+1 TO P:IF A$(N,H)>A$(E,H) THEN SWAP A$(N,H),A$(E,H):SWAP W(N,H),W(E,H) 237 NEXT E,N:F=H*41+11:LOCATE 3:FOR B=V TO V+20:LOCATE,F:IF B>P THEN PRINT SPACE$(19) ELSE Y$=EXTRACT$(A$(B,H),ANY". "):COLOR 7-W(B,H):PRINT LEFT$(STR$(B+1)+". ",6)Y$SPACE$(8-LEN(Y$))LEFT$(LTRIM$(A$(B,H),Y$)+" ",5) 240 NEXT:RETURN 245 GOSUB 190:M=0:B=1:FOR N=Z TO G:ON W(N-M,L) GOSUB 275:NEXT:IF B THEN ON-(W$="..")GOTO 70:N=A:GOSUB 275 255 GOSUB 235:GOTO 62 260 GOSUB 190:M=0:B=1:FOR N=Z TO G:ON W(N-M,L) GOSUB 290:NEXT:IF B AND W$<>".." THEN N=A:GOSUB 290 270 GOSUB 235:GOTO 70 275 I=1:E=0:W$=A$(N-M,L):ON-(RIGHT$(W$,3)=R$)GOTO 320:T$=RTRIM$(V$,U$)+W$:Y$=DIR$(T$,39):IF Y$<>"" THEN ERROR 58 277 OPEN"b",1,W$:OPEN"b",2,T$:WHILE ISFALSE EOF(1):GET$#1,512,Y$:PUT$#2,Y$:WEND:CLOSE 2,1:ATTRIB T$,ATTRIB(W$) 280 W(N-M,L)=0:ON-(E=75)GOTO 282:P=P+1:A$(P,H)=W$:IF S$=V$ THEN G=P:A$(G,L)=W$ 282 B=0:ON-(Q$="<")GOSUB 290:I=0:RETURN 290 I=2:W$=A$(N-M,L):Y$=RIGHT$(W$,3):ON-(Y$=R$)GOTO 305:KILL W$ 295 B=G-N+M+1:ARRAY DELETE W(N-M,L) FOR B:ARRAY DELETE A$(N-M,L) FOR B,"":IF V$=S$ THEN ARRAY DELETE W(N-M,H) FOR B:ARRAY DELETE A$(N-M,H) FOR B,"":P=P-1:IF C>P THEN C=P:IF V>C THEN V=C 297 B=0:G=G-1:M=M+1:IF A>G THEN A=G:IF K>A THEN K=A 300 I=0:RETURN 305 T$=RTRIM$(W$,Y$):W$=DIR$(T$+"\*.*",39):FOR F=0 TO 511:ON-(W$="")GOTO 310:W$=T$+"\"+W$:KILL W$:W$=DIR$:NEXT 310 W$=T$:RMDIR T$:GOTO 295 320 P$=RTRIM$(W$,R$):T$=RTRIM$(V$,U$)+P$:MKDIR T$:X$=DIR$(P$+"\*.*",39):FOR F=0 TO 511:ON-(X$="")GOTO 280:W$=T$+"\"+X$:OPEN"b",1,P$+"\"+X$:OPEN"b",2,W$:WHILE ISFALSE EOF(1):GET$#1,512,Y$:PUT$#2,Y$:WEND:CLOSE 2,1 325 ATTRIB W$,ATTRIB(P$+"\"+X$):X$=DIR$:NEXT:ATTRIB T$,ATTRIB(P$):GOTO 280 330 N=L*41+17:LOCATE F+3,N:PRINT " -> ":M=8:X$="":GOSUB 195:W$=X$:MKDIR X$:G=G+1:A$(G,L)=X$+R$:IF V$=S$ THEN P=G:A$(P,H)=A$(G,L) 332 GOSUB 235:GOTO 62 335 IF RIGHT$(W$,3)=R$ THEN P$=RTRIM$(W$,R$):M=8 ELSE P$=W$:M=12 340 N=L*41+17:LOCATE F+3,N:PRINT LEFT$(P$+"",M):Q$=X$:X$=P$:GOSUB 195:W$=X$:NAME P$ AS X$:A$(A,L)=X$+LTRIM$(A$(A,L),P$):W(A,L)=0:IF V$=S$ THEN A$(A,H)=A$(A,L):W(A,H)=0 342 GOSUB 235:X$=Q$:GOTO 62 345 ON-(J=0)GOSUB 190:M=LEN(X$)+8:LOCATE 1,L*41+1:PRINT"Filter: "X$MID$(REPEAT$(39,""),M+1):M=41-M:N=L*41+9:F=-2:D=0 350 GOSUB 195:FOR N=Z TO G:W(N,L)=0:NEXT:GOTO 25 380 SCREEN 0,,1:CLS:PRINT:PRINT" A N L E I T U N G":LOCATE 5:PRINT" ..BAT-, COM- o. EXE-Datei ausfhren, Verzeichniswechsel":PRINT" ...Datei/Verzeichnis markieren" 385 PRINT" ...Kopieren von Dateien/Verzeichnissen ohne Unterverzeichnisse":PRINT TAB(12)"(Unterverzeichnisse knnen anschliessend separat kopiert werden)" 390 PRINT" ....Lschen von Dateien/Verzeichnissen ohne Unterverzeichnisse":PRINT TAB(12)"(Unterverzeichnisse mssen zuvor separat gelscht werden)" 395 PRINT" ......Verschieben von Dateien/Verzeichnissen ohne Unterverzeichnisse":PRINT TAB(12)"(Unterverzeichnisse knnen anschliessend verschoben und das":PRINT TAB(12)"bergeordnete Verzeichnis separat gelscht werden)" 400 PRINT" ......Datei/Verzeichnis unbenennen":PRINT" ......Neues Verzeichnis erstellen":PRINT" .....Wechsel zur Filtereingabe (Datei-/Verzeichnisname), Abbruch":PRINT TAB(12)"der Filtereingabe" 405 PRINT" .....Wechsel zur anderen Spalte":Print" .....Wechsel zum entsprechenden logischen Laufwerk":PRINT" ...Programmende, aber nicht whrend Filtereingabe":LOCATE 23:PRINT" Zurck " 415 Y$=INKEY$:ON-(Y$<>CHR$(27))GOTO 415:SCREEN 0,,0:GOTO 90