Board logo

标题: 批处理:删除当前文件夹中最旧文件 [打印本页]

作者: willsort     时间: 2004-11-14 00:00    标题: 批处理:删除当前文件夹中最旧文件

To All:
    这原本是应网友之托而写的一个小程序,只是后来发现原程序在NT环境下无法正常使用,由此引发了NT和9x命令行兼容性的学习。其中,文件的遍历是最早进行的,而此代码其实也是文件遍历的的一种变形, 所以在更新了文件遍历代码 Visit.bat 之后,顺便将它也更新了。
:: DelOld.Bat - 删除当前文件夹中最早被修改的一个文件
:: Will Sort - 2004/06/26
:: 2004/11/13 Updated
@echo off
if [%1]==[$] goto %2

:: 创建并执行一个DEBUG脚本,以生成一个设置变量 %File% 的前缀文件
:MakeScr
echo e 100 'set File='> ~DelOld.asd
for %%s in (rcx 9 n~DelOld.pre w q) do echo %%s>> ~DelOld.asd
debug < ~DelOld.asd > nul
if [%OS%]==[Windows_NT] chcp 936>nul
if not exist ~DelOld.pre %0 $ Error Can't make prefix file.

:: 设置变量 %File% 为最旧文件并将其所指的文件之删除(不会删除自身)
:: 若想删除目录,可将1句中的 /a-d 改为 /ad,4句中的del 改为deltree /y
:DelAnOld
dir %1 /a-d /od /b | find "DelOld" /v /i >> ~DelOld.pre
find "set File=" < ~DelOld.pre > ~DelOld.bat
call ~DelOld.bat
if not "%File%"=="" del "%File%"

:: 清理生成的临时文件
:Clear
for %%f in (~DelOld*.*) do del %%f
set File=
goto end

:: 错误处理
:Error
shift
shift
echo.
echo Error: %1 %2 %3 %4 %5 %6 %7 %8 %9
echo.
goto end

:end
[ Last edited by willsort on 2005-8-26 at 18:57 ]
作者: autoit     时间: 2004-11-14 00:00
收藏!