主题:[讨论]TO:红尘(删除文件的程序)
'[color=0000FF]调用格式: delfile file.dll C:E:D:[/color]
DEFLNG A-Z '[color=0000FF]默认所有未声明变量为长整形[/color]
DECLARE SUB ChangeDataDrive (filespec$)
tofind$ = COMMAND$ '[color=0000FF]读命令行参数[/color]
ON ERROR RESUME NEXT '[color=0000FF]出错处理[/color]
'tofind$ = "*.bas C:D:E:" '[color=0000FF]这个是我调试的时候用的[/color]
tofind$ = RTRIM$(LTRIM$(UCASE$(tofind$))) '[color=0000FF]把所有字母变大写,去掉前后空格[/color]
CLS
PRINT tofind$
i = INSTR(1, tofind$, CHR$(32)) '[color=0000FF]找中间(文件名和盘符之间的)空格[/color]
IF i THEN
c$ = MID$(tofind$, i + 1) '[color=0000FF]找目标盘符[/color]
tofind$ = LEFT$(tofind$, i - 1)
END IF
IF c$ = "" THEN c$ = "C:"
'cur$ = CURDIR$ '[color=0000FF]这一句忘记删掉了,所以4.5才通不过的[/color]
curf$ = "C:\bak2005.tmp" '[color=0000FF]临时存放DIR结果的文件[/color]
PRINT "Seaching.... (On Dos's Diring....)"
DO
p = INSTR(p + 1, c$, ":") '[color=0000FF]找盘符的冒号[/color]
IF p = 0 THEN EXIT DO '[color=0000FF]查完退出[/color]
cc$ = MID$(c$, p - 1, 2) '[color=0000FF]单个盘符[/color]
PRINT cc$
SHELL cc$ '[color=0000FF]转到该盘去[/color]
CHDIR "\" '[color=0000FF]到根目录去[/color]
SHELL "dir /s " + tofind$ + " >>" + curf$ '[color=0000FF]定重向连接到文件末[/color]
LOOP UNTIL ERR '[color=0000FF]出错即退出[/color]
killedf$ = "C:\deled.txt" '[color=0000FF]用文件记录删除历史[/color]
f2% = FREEFILE '[color=0000FF]空闲文件号[/color]
OPEN killedf$ FOR APPEND AS #f2% '[color=0000FF]从文件末记录删除历史[/color]
a$ = ":\" '[color=0000FF]DIR结果中,有路径特征的就是这两个符号了[/color]
fr% = FREEFILE '[color=0000FF]第二个空闲文件号[/color]
OPEN curf$ FOR INPUT AS #fr%
DO UNTIL EOF(fr%) '[color=0000FF]到达文件末退出[/color]
li = li + 1 '[color=0000FF]正在读文件的第几行[/color]
LOCATE , 2
PRINT "Reading line"; li; "....",
LINE INPUT #fr%, s$ '[color=0000FF]读入行字符串[/color]
i = INSTR(1, s$, a$) '[color=0000FF]是否含有路径特征[/color]
IF i THEN
k$ = MID$(s$, i - 1) '[color=0000FF]目录路径名[/color]
IF RIGHT$(k$, 1) <> "\" THEN k$ = k$ + "\" '[color=0000FF]根目录是不一样的[/color]
k$ = k$ + tofind$ '[color=0000FF]在路径后面加上文件名[/color]
PRINT "Killing "; k$
shell "attrib -h -r -s "+k$ '[color=0000FF]这一句是你提醒才加上去的[/color]
KILL k$ '[color=0000FF]删除文件[/color]
PRINT #f2%, "At "; DATE$, TIME$; " to killed the file - :< "; k$; " > "
END IF '[color=0000FF]记录删除历史[/color]
LOOP
CLOSE
KILL curf$ '[color=0000FF]把这个临时文件删除掉[/color]
PRINT "Press the Key <Enter> to View the killed files list, Any key else to Exit."
IF INPUT$(1) = CHR$(13) THEN SHELL "edit " + killedf$ '[color=0000FF]按回车进入删除历史的浏览[/color]
SYSTEM
DEFLNG A-Z '[color=0000FF]默认所有未声明变量为长整形[/color]
DECLARE SUB ChangeDataDrive (filespec$)
tofind$ = COMMAND$ '[color=0000FF]读命令行参数[/color]
ON ERROR RESUME NEXT '[color=0000FF]出错处理[/color]
'tofind$ = "*.bas C:D:E:" '[color=0000FF]这个是我调试的时候用的[/color]
tofind$ = RTRIM$(LTRIM$(UCASE$(tofind$))) '[color=0000FF]把所有字母变大写,去掉前后空格[/color]
CLS
PRINT tofind$
i = INSTR(1, tofind$, CHR$(32)) '[color=0000FF]找中间(文件名和盘符之间的)空格[/color]
IF i THEN
c$ = MID$(tofind$, i + 1) '[color=0000FF]找目标盘符[/color]
tofind$ = LEFT$(tofind$, i - 1)
END IF
IF c$ = "" THEN c$ = "C:"
'cur$ = CURDIR$ '[color=0000FF]这一句忘记删掉了,所以4.5才通不过的[/color]
curf$ = "C:\bak2005.tmp" '[color=0000FF]临时存放DIR结果的文件[/color]
PRINT "Seaching.... (On Dos's Diring....)"
DO
p = INSTR(p + 1, c$, ":") '[color=0000FF]找盘符的冒号[/color]
IF p = 0 THEN EXIT DO '[color=0000FF]查完退出[/color]
cc$ = MID$(c$, p - 1, 2) '[color=0000FF]单个盘符[/color]
PRINT cc$
SHELL cc$ '[color=0000FF]转到该盘去[/color]
CHDIR "\" '[color=0000FF]到根目录去[/color]
SHELL "dir /s " + tofind$ + " >>" + curf$ '[color=0000FF]定重向连接到文件末[/color]
LOOP UNTIL ERR '[color=0000FF]出错即退出[/color]
killedf$ = "C:\deled.txt" '[color=0000FF]用文件记录删除历史[/color]
f2% = FREEFILE '[color=0000FF]空闲文件号[/color]
OPEN killedf$ FOR APPEND AS #f2% '[color=0000FF]从文件末记录删除历史[/color]
a$ = ":\" '[color=0000FF]DIR结果中,有路径特征的就是这两个符号了[/color]
fr% = FREEFILE '[color=0000FF]第二个空闲文件号[/color]
OPEN curf$ FOR INPUT AS #fr%
DO UNTIL EOF(fr%) '[color=0000FF]到达文件末退出[/color]
li = li + 1 '[color=0000FF]正在读文件的第几行[/color]
LOCATE , 2
PRINT "Reading line"; li; "....",
LINE INPUT #fr%, s$ '[color=0000FF]读入行字符串[/color]
i = INSTR(1, s$, a$) '[color=0000FF]是否含有路径特征[/color]
IF i THEN
k$ = MID$(s$, i - 1) '[color=0000FF]目录路径名[/color]
IF RIGHT$(k$, 1) <> "\" THEN k$ = k$ + "\" '[color=0000FF]根目录是不一样的[/color]
k$ = k$ + tofind$ '[color=0000FF]在路径后面加上文件名[/color]
PRINT "Killing "; k$
shell "attrib -h -r -s "+k$ '[color=0000FF]这一句是你提醒才加上去的[/color]
KILL k$ '[color=0000FF]删除文件[/color]
PRINT #f2%, "At "; DATE$, TIME$; " to killed the file - :< "; k$; " > "
END IF '[color=0000FF]记录删除历史[/color]
LOOP
CLOSE
KILL curf$ '[color=0000FF]把这个临时文件删除掉[/color]
PRINT "Press the Key <Enter> to View the killed files list, Any key else to Exit."
IF INPUT$(1) = CHR$(13) THEN SHELL "edit " + killedf$ '[color=0000FF]按回车进入删除历史的浏览[/color]
SYSTEM