forfiles

forfiles是Windows下的命令,可以在指定目录下按照模式搜索文件,然后调用cmd命令做操作。

比如定时删除IIS的日志:

forfiles /p c:\windows\system32\logfile /m *.log -d -180 /c "cmd /c del @path"

/p    指定搜索的目录

/m    模式

-d    负号代表N天以前

/c    后面跟的就是调用的指令了

@path    代表获取文件的完整路径

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 +2016/7/11 /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"

然后将此命令行保存为一个bat文件,就可以加入系统定时任务了。

时间: 2024-11-05 04:45:34

forfiles的相关文章

Windows使用robocopy、forfiles备份数据

事件描述: 2016.11.14一早,禅道(bug管理系统)启动不了了.经过一天各种折腾都不能正常启动服务,找到数据库目录和备份目录,都是空的.这是服务器在祝我31岁生日快乐吗,不带这么玩的. 下图为正常状态 下图为启动失败状态 自身存在的问题: 由于心里一直没把禅道放在心上,服务器的备份策略从来没有检查过.也没做过"灾难恢复"的测试.以至于出了问题后才想着去了解这个系统,看官方文档,找数据库目录等. 到现在为止也不知道系统是为什么挂的,挂的同时,数据库文件一点影也没了.只能让测试重新

bat脚本-删除修改日期过久的文件夹主要用了FORFILES

::Delete Folder ::BY ZF 20151019 echo off&setlocal enabledelayedexpansion :begin set folder_path=D:\delete set /p folder_date="pls input valid date(7||2015/10/19):" ::set folder_date=30 ::FORFILES /p %folder_path%  /s /M zte* /D -2015/10/15

CMD批处理——forfiles命令使用,自动删除过期备份文件

公司服务器用来备份数据的硬盘过段时间就会被备份文件占满,弄得我老是要登录到服务器去手工删除那些老的文件,有时忘记了就会导致硬盘空间不足而无法备份.因为只要保留最近几天的备份,如果可以做一个批处理让系统自动删除老备份文件就好了,但是Windows的命令行和Linux的Shell比起来功能差了很多,到底行不行我自己也不清楚.于是上网查了一下各位大虾发的帖子,再经过自己的摸索和尝试,发现只要花点功夫还是能实现这个功能的.Windows Server 2003内置的命令行文件,适合于XP以上系统示例:

Windows forfiles(删除历史文件)

200 ? "200px" : this.width)!important;} --> 介绍 forfiles是windows自带的一个批量删除命令,对于时间的判断是通过文件自身的修改日期属性进行判断,使用它来对历史文件进行判断删除是个不错的选择. 语法 forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]] [/p Path ]:指定路径,

批处理forfiles

FORFILES [/P pathname] [/M searchmask] [/S]          [/C command] [/D [+ | -] {yyyy/MM/dd | dd}] 描述:     选择一个文件(或一组文件)并在那个文件上     执行一个命令.这有助于批处理作业. 参数列表:    /P    pathname      表示开始搜索的路径.默认文件夹是当前工作的                        目录 (.).    /M    searchmask

DOS 命令forfiles

forfiles /p E:/dbbackup/diff /s /m *.* /d -14 /c "cmd /c del @file" forfiles: /p 指定的路径 /s 包括子目录 /m 查找的文件名掩码 /d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前 /c 运行的命令行   表示为每个文件执行的命令.命令字符串应该                        用双引号括起来. 默认命令是 "cmd /c echo @file".下

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

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

forfiles命令批处理删除过期文件

命令格式: forfiles.exe /p "D:\备份" /s /m *.zip /d -7 /c "cmd /c del @path" /p:指定目录 /s:递归搜索子目录 /m:搜索"*.zip"文件来删除,默认是"*.*" /d:-7表示7天前的文件 /c:自行命令,后面双引号括起来的是删除文件命令

Windows中forfiles的使用介绍

FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy/MM/dd | dd}] 描述: 选择一个文件(或一组文件)并在那个文件上 执行一个命令.这有助于批处理作业. 参数列表: /P    pathname      表示开始搜索的路径.默认文件夹是当前工作的目录 (.). /M    searchmask    根据搜索掩码搜索文件.默认搜索掩码是 '*'. /S               指导