cmd forfiles 从文件夹或树中选择要进行批处理的文件(方便批量删除n天前的文件)_DOS/BAT

FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {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 +2012-5-1 /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"

下面是一些实例
===============================================================================
以下是删除N天前备份文件的批处理,注:在windows2003下,如XP下因为没有forfiles.exe,未测试拷贝2003的文件到XP的system32目录
删除在C盘backup目录下最后修改日期在10天前的文件
=================================================================================
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path"
=================================================================================
以下是复制某天前文件到其它位置的批处理
要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下
=================================================================================
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\"
Windows Server 2003内置的命令行文件,适合于XP以上系统
示例:
forfiles /m *.bkf /d -28 /c "cmd /c del @file /f"
删除当前目录下28天以前的扩展名为bkf文件(以当前系统时间为基准)
forfiles 自动删除7天前文件 delete
2008-09-12 15:01
用forfiles.exe试试。
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path"
做成批处理文件,bat文件与forfiles.exe同一目录下,建一个bat文件的快捷方式在启动。

forfiles在一些系统中没有,特打包方便大家使用

时间: 2024-08-09 13:36:17

cmd forfiles 从文件夹或树中选择要进行批处理的文件(方便批量删除n天前的文件)_DOS/BAT的相关文章

asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件

问题描述 asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件asp.net中的文件上传控件能否打开一个固定文件夹然后再选择文件我现在要上传文件,但是在点击浏览的时候我想要打开一个指定的目录,然后在这个目录中选择文件..用什么方法能够实现呢?请各位大侠帮忙呀!!!!!!!!!??????????????????????????谢谢各位!!!!!!!! 解决方案 解决方案二:属于客户端程序,安全考虑的话怕不可行解决方案三:可以,将所选目录文件列出就行了,用常用的IO操作就能实现CSD

用批处理文件自动备份文件及文件夹,并自动删除n天前的文件

原文:用批处理文件自动备份文件及文件夹,并自动删除n天前的文件 ---恢复内容开始--- 下是备份的批处理,添加到"计划任务"中,设定时间自动运行 复制代码 代码如下:@echo off rem 格式化日期 rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 rem 变成我们想要的.date:~0,4的意思是从0开始截取4个字符 set d=%date:~0,4%%date:~5,2%%date:~8,2% rem

Windows和Linux下定时删除某天前的文件的脚本_DOS/BAT

以前做到最多的定时我们就是定时备份功能了,我们常用利用定时功能来备份网站数据或备份数据库了,下面我来给(www.jb51.net)大家介绍几个Linux与Windows中定时删除某天前的文件方法,这个与备份有点区别,但大同小义了. Windows下bat文件内容如下: 复制代码 代码如下: @echo off forfiles -p "D:\servers\apache2.2\logs" -s -m *.log -d -15 -c "cmd /c del @path"

Win7系统如何批量删除C盘log日志文件?

  Win7系统批量删除C盘log日志文件的方法: 1.打开计算机,进入到C盘(系统盘); 2.在文件夹右上方搜索框中输入 *.log ,这时系统就会开机搜索C盘下所有的Log 日志文件; 3.等到搜索完毕后,按下CTRL + A 快捷键,全选Log文件,使用del来删除文件; 4.再清空一下回收站,就可以将C盘中的所有log日志文件删除干净了. 备注: 在搜索中 "*"星号 代表任意文件名,.log 表示以log为后缀的文件. 由于C盘log日志文件太多一个一个删除是不可能的,用户需

win7/win xp怎么批量删除图片缩略图Thumbs.db文件

方法如下: 双击桌面"我的电脑",打开菜单栏"工具"选项,点击"查看"选项卡,内部列表有个"不缓存缩略图"选项,取消掉即可,下次在浏览带图片的文件夹就不会自动生成缩略图Thumbs.db文件了. 但是对于已经生成的Thumbs.db文件我们可以使用以下方法进行批量删除: @echo off del c:Thumbs.db /f/s/q/a del d:Thumbs.db /f/s/q/a del e:Thumbs.db /f/

使用vbs脚本定时删除N天前的文件_vbs

脚本放在定时任务里代替服务定时执行一些操作比较方便,下面是实现删除文件夹下N天前创建的文件的vbs脚本,在配置文件 DelFolderList.txt 中配置要删除的文件路径,ONLY-DEL-FILES 下的路径 是只删除其下的文件,不删除其内的子目录的文件.DEL-FOLDER-FILES下的路径 是删除其内文件及其子目录内的文件,子目录为空时删除目录,删除的文件list 放在log文件夹内.例配置文件DelFolder.txt 内容如下: ONLY-DEL-FILESE:\Code\tes

bat脚本-bat或者vbs实现 删除一个月之前的文件

问题描述 bat或者vbs实现 删除一个月之前的文件 文件目录为:dir11.11.11.63name2014-05-26 目标: 删除IP段 在63~85一个月之前文件.使用bat或者vbs都行

forfiles命令批量删除N天前文件

     在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余.备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup Exec直接备份上带的作业改成了如下方式:     Step 1: 通过数据库维护计划将备份生成在本地磁盘M,完整备份保留2天,事务日志备份保留3天             M:\DB_BACKUP\FULL_BACKUP             M:\DB_BACKUP\LOG_BACK

使用forfiles命令批量删除N天前文件_DOS/BAT

在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余.备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup Exec直接备份上带的作业改成了如下方式:     Step 1: 通过数据库维护计划将备份生成在本地磁盘M,完整备份保留2天,事务日志备份保留3天             M:\DB_BACKUP\FULL_BACKUP             M:\DB_BACKUP\LOG_BACKUP