中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求证一个删除指定目录下,早于10天的脚本
作者:
标题: 求证一个删除指定目录下,早于10天的脚本 上一主题 | 下一主题
sunwayle
初级用户





积分 22
发帖 9
注册 2008-8-25
状态 离线
『楼 主』:  求证一个删除指定目录下,早于10天的脚本 使用 LLM 解释/回答一下

系统环境:WINDOWS SERVER 2003 SP2

我执行下面脚本时,提示参数格式不对

find . -name 'F:\fullbak\ARCH_OAMIS*' -mtime +10 -delete
find . -name 'F:\fullbak\FULL_OAMIS*' -mtime +10 -delete

1.这个脚本哪里不对?
2.帮忙写一个这样的脚本,可以么,谢谢?

2008-8-25 17:59
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

Windows中的find命令不能这样用,你这是Unix/Linux中的用法,可以下载一个GNU for Win32 的find.exe试试。



2008-8-25 18:06
查看资料  发短消息  网志   编辑帖子  回复  引用回复
lbccyxs
初级用户





积分 54
发帖 27
注册 2006-12-2
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

FORFILES
{yyyy-MM-dd | dd}]

描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。

参数列表:
/P pathname 表示开始搜索的路径。默认文件夹是当前工作的
目录 (.)。

/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。

/S 指导 forfiles 递归到子目录。像 "DIR /S"。

/C command 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。

默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。

要在命令行包括特殊字符,字符请以 0xHH
形式使用十六进制代码(例如,0x09 为 tab)。
内部 CMD.exe 命令前面应以 "cmd /c" 开始。

/D date 选择文件,其上一次修改日期大于或等于 (+),
或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期;
或选择文件,其上一次修改日期大于或等于 (+)
当前日期加 "dd" 天,或者小于或等于 (-) 当前
日期减 "dd" 天。有效的 "dd" 天数可以是
0 - 32768 范围内的任何数字。如果没有指定,
"+" 被当作默认符号。

/? 显示帮助消息。

例如:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 在 30 前就被更改。"
FORFILES /D 2001-01-01
/C "cmd /c echo @fname 在 2001年1月1日就是新的。"
FORFILES /D +2008-8-25 /C "cmd /c echo @fname 今天是新的。"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

2008-8-25 18:09
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

2003以前的系统没有FORFILES,不知楼主能否接受。



2008-8-25 19:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sunwayle
初级用户





积分 22
发帖 9
注册 2008-8-25
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

谢谢,LS两位的回答。

SERVER2003还真没FORFILES这个命令,有人能帮忙,写个实现这种要求的脚本么。。

2008-8-25 21:33
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

@echo off
setlocal enabledelayedexpansion
set SrcDir=C:\test
>"%tmp%\MyDel.vbs" echo dt=date()-10
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set DateFlag=%%a
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%"') do (
set FileDate=%%~ta
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! lss %DateFlag% (
del /f /q "%%a"
)
)




2008-8-25 21:35
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sunwayle
初级用户





积分 22
发帖 9
注册 2008-8-25
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

高手!有效果,但不是很明白。
1.第一次运行的时候,会产生一个取系统日期的时间脚本,怎么为这个脚本指定一个路径呢?这个脚本是通过什么来执行删除的呢?

2.这个脚本是根据系统日期删除的。若按文件名删,怎么整?

2008-8-25 21:57
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

动态生成的MyDel.vbs是个临时脚本,存放在%temp%目录,用完了删除都可以,不必理会它。

文件名有规律么?给个例子?



2008-8-25 22:01
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

@echo off
setlocal enabledelayedexpansion
set SrcDir=C:\test
>"%tmp%\MyDel.vbs" echo dt=date()-10
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set DateFlag=%%a
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%\ARCH_OAMIS_*"') do (
set FileDate=%%~na
set FileDate=!FileDate:~11,8!
if !FileDate! lss %DateFlag% (
del /f /q "%%a"
)
)




2008-8-25 22:09
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

这样可以吗?
@echo off
setlocal enabledelayedexpansion
>"F:\script\MyDel.vbs" echo dt=date()-31
>>"F:\script\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"F:\script\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "F:\script\MyDel.vbs"') do set DateFlag=%%a
for /f "tokens=*" %%a in ('dir /s /b /a-d "F:\backall\200.6\lisdatabak" "F:\backall\200.5\emr" "F:\backall\200.5\RisBackup" "F:\backall\200.5\TLDBFBackup" "F:\backall\200.3" "F:\backall\100.4\sql"') do (
set FileDate=%%~ta
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! lss %DateFlag% (
del /f /q "%%a"
)
)




2008-8-25 22:53
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sunwayle
初级用户





积分 22
发帖 9
注册 2008-8-25
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

@echo off
setlocal enabledelayedexpansion
set SrcDir=F:\backall\200.6\lisdatabak
set SrcDir=F:\backall\200.5\emr
set SrcDir=F:\backall\200.5\RisBackup
set SrcDir=F:\backall\200.5\TLDBFBackup
set SrcDir=F:\backall\200.3
set SrcDir=F:\backall\100.4\sql
>"F:\script\MyDel.vbs" echo dt=date()-31
>>"F:\script\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"F:\script\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "F:\script\MyDel.vbs"') do set DateFlag=%%a
for /f "tokens=*" %%a in ('dir /s /b /a-d "%SrcDir%"') do (
set FileDate=%%~ta
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! lss %DateFlag% (
del /f /q "%%a"
)
)

像这种多个目录下的文件如何定义?

2008-8-25 22:54
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

10楼的不行?



2008-8-25 22:57
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sunwayle
初级用户





积分 22
发帖 9
注册 2008-8-25
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

VERY OK!

靠,LS太好了!

感激得泪眼花花!

2008-8-25 23:02
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: