标题: [文件操作] 批处理删除某目录下三天前创建的文件。 [打印本页]
作者: reddiamond 时间: 2008-8-4 15:19 标题: 批处理删除某目录下三天前创建的文件。
批处理删除某目录下(d:\111)三天前所创建的文件,不知能否实现,假如能够实现,还望高手指点。
作者: namejm 时间: 2008-8-4 16:30
N天前和N天后之类的时间计算,历来是批处理的一大难题——并不是无法计算,而是代码太过复杂,让人望而却步,不过好在也有不少牛人找到了解决的办法,可以参考这个帖子:批处理 计算日期 函数 调用
另:如果是删除具体日期(比如 2008-01-01)之前或之后的文件,则用批处理来解决将会十分容易。
作者: terse 时间: 2008-8-5 01:25
- @echo off
- SET/p TT=输入天数:
- SET/p PH=输入路径:
- for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
- if %p3% gtr %TT% goto ppp
- :nxt
- set/a p2-=1
- if %p2% equ 0 set/a p1-=1&set p2=12
- set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
- for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3+=%%i
- if %p3% leq %tt% goto nxt
- :ppp
- set/a p3-=tt
- setlocal enabledelayedexpansion
- for %%i in (p2 p3) do if !%%i! lss 10 set %%i=0!%%i!
- for /r "%ph%" %%i in (*) do set t=%%~ti&call :loop "%%i"
- pause
- goto :eof
- :loop
- if %p1%-%p2%-%p3% gtr %t:~,10% del %1
复制代码
作者: reddiamond 时间: 2008-8-5 11:43 标题: 出现如下错误
原帖由 terse 于 2008-8-5 01:25 发表
@echo off
SET/p TT=输入天数:
SET/p PH=输入路径:
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1 ...
执行之后显示nxt不是内部或外部命令,也不是可运行的程序
作者: Batcher 时间: 2008-8-5 11:47 标题: 回复 3楼 的帖子
%%~ti获取的是文件的 Last Access Time
而不是 Creation Time
作者: terse 时间: 2008-8-5 13:19
原帖由 reddiamond 于 2008-8-5 11:43 发表 [url=redirect.php?goto=findpost&pid=6561&ptid=1338][/url]
执行之后显示nxt不是内部或外部命令,也不是可运行的程序
确认输入天数了吗?如%TT% 为空时 才有你说的情况 加个判断
原帖由 Batcher 于 2008-8-5 11:47 发表
%%~ti获取的是文件的 Last Access Time
而不是 Creation Time
取得创建时间dir /od /tc /a-d就可以做到
修改一下试试:
- @echo off
- SET/p TT=输入天数:
- SET/p PH=输入路径:
- if "%tt%"=="" set tt=0
- for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
- if %p3% gtr %TT% goto ppp
- :nxt
- set/a p2-=1
- if %p2% equ 0 set/a p1-=1,p2=12
- set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
- for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3+=%%i
- if %p3% leq %tt% goto nxt
- :ppp
- set/a p3-=tt
- setlocal enabledelayedexpansion
- for %%i in (p2 p3) do if !%%i! lss 10 set %%i=0!%%i!
- for /f "skip=5 tokens=1,3*" %%i in ('dir /tc /a-d "%ph%\*.*" 2^>nul^|findstr /v "字节"') do (
- if %p1%-%p2%-%p3% geq %%i del "%ph%\%%k"
- )
- pause&exit
复制代码
作者: reddiamond 时间: 2008-8-5 15:39
原帖由 terse 于 2008-8-5 13:19 发表
确认输入天数了吗?如%TT% 为空时 才有你说的情况 加个判断
取得创建时间dir /od /tc /a-d就可以做到
修改一下试试:
@echo off
SET/p TT=输入天数:
SET/p PH=输入路径:
if "%tt%"=="" set tt=0
for /f " ...
如附件中的错误
作者: terse 时间: 2008-8-5 19:05
原帖由 reddiamond 于 2008-8-5 15:39 发表
[url=redirect.php?goto=findpost&pid=6582&ptid=1338][/url]如附件中的错误
想不出什么原因 出现你这样的情况 因为我这里是测试后发的 也许的显示格式问题 但看你的截图 怎么路径是D:\dos1\dos怎么会有C:\盘文件找不到的提示呢?我发不了测试图
作者: Batcher 时间: 2008-8-5 19:10 标题: 回复 7楼 的帖子
del默认无法删除隐藏文件、系统文件等
需要加开关
看看帮助吧
del /?
作者: fastslz 时间: 2008-8-5 20:56
- @echo off
- regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
- ::::备份系统原时间日期格式
- >aDate.reg echo REGEDIT4
- >>aDate.reg echo.
- >>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
- >>aDate.reg echo "sShortDate"="yyyy-MM-dd"
- >>aDate.reg echo "sDate"="-"
- >>aDate.reg echo "sTimeFormat"="HH:mm:ss"
- regedit /s aDate.reg&del aDate.reg
- ::::统一格式化系统日期格式(无需reg.exe兼容Win2000)
-
- >tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d", -3 ,Date),2)
- for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i& del tmp.vbs
- ::::用VBS计算当前日期减 3 天,如果要当前之后的 3 天请将 ↑上面 2 行的 -3 改成 +3
-
- echo %aDate%
- set 年=%aDate:~0,4%
- set 月=%aDate:~5,2%
- set 日=%aDate:~8,2%
- set 3天前=%年%%月%%日%
- setlocal enabledelayedexpansion
- Wmic Datafile Where "Drive='D:' and path='\\111\\' and CreationDate<'!3天前!000000.000000+***'" call delete /NOINTERACTIVE
- regedit /s "%temp%\bak.reg"&del "%temp%\bak.reg"
- ::::还原系统原时间日期格式
- pause
复制代码
[ 本帖最后由 fastslz 于 2008-8-5 20:57 编辑 ]
作者: reddiamond 时间: 2008-8-6 16:18
原帖由 fastslz 于 2008-8-5 20:56 发表
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
::::备份系统原时间日期格式
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Con ...
谢谢!这个测试成功。
谢谢所有回帖的高手们.
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |