ITPub博客

首页 > Linux操作系统 > Linux操作系统 > windows自带删除forfiles命令批处理详解

windows自带删除forfiles命令批处理详解

Linux操作系统 作者:germany006 时间:2016-01-06 09:24:47 0 删除 编辑

http://www.sinoxs.com/htm/2014423/1438.htm



forfiles是2003自带的命令,windows7以上系统自动此程序,详细可以forfiles/?查询。可以复制到XP中使用,复制到2000中测试失败。


如要自动删除三天前的文件
forfiles /p i:\serverbak\2005 /s /m *.* /d -2 /c "cmd /c del @file"

当文件更改日期晚于10/18/2008时,删除所有C:Backup目录和它子目录下的.sql文件。
  EXEC xp_cmdshell FORFILES /p c:BACKUP /s /m *.sql /d 10/18/2008 /c "CMD /C del /Q /F @FILE"

当文件更改日期多于30天时,删除所有C:Backup目录和它的子目录下的.sql文件。
  EXEC xp_cmdshell FORFILES /p c:BACKUP /s /m *.sql /d -30 /c "CMD /C del /Q /F @FILE"


注意:这里的/Q是强制不需要回答YES或者NO,直接删除(因为删目录及子目录时多个文件,系统会询问YES或者NO)


删除前一天的历史数据
forfiles /m *.fc /s /D -1 /c "cmd /c del @file"

删除当前目录下及其子目录中的空文件夹
for /f "tokens=*" %a in (dir /b /ad /s E:\FileCache^|sort /r) do rd "%a" /q 2>nul

在批处理中把%改成%%
for /f "tokens=*" %%a in (dir /b /ad /s E:\FileCache^|sort /r) do rd "%%a" /q 2>nul


说明:
/p 指定的路径 
/s 包括子目录 
/m 查找的文件名掩码 
/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前  

/c 运行的命令行   表示为每个文件执行的命令。命令字符串应该
                        用双引号括起来。
                        默认命令是 "cmd /c echo @file"。下列变量
                        可以用在命令字符串中:
                        @file    - 返回文件名。
                        @fname   - 返回不带扩展名的文件名。
                        @ext     - 只返回文件的扩展。
                        @path    - 返回文件的完整路径。
                        @relpath - 返回文件的相对路径。
                        @isdir   - 如果文件类型是目录,返回 "TRUE";
                                   如果是文件,返回 "FALSE"。
                        @fsize   - 以字节为单位返回文件大小。
                        @fdate   - 返回文件上一次修改的日期。
                        @ftime   - 返回文件上一次修改的时间。
示例
要列出驱动器 C: 上的所有批处理文件,请键入:
forfiles /p c:\ /s /m*.bat /c"cmd /c echo @file is a batch file" 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28371090/viewspace-1972299/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ORACLE,MYSQL,POSTGRESQL,SQLSERVER,MONGODB,TIDB,DB2,REDIS,本博客只为记录自己学习总结,不代表完全准确。

注册时间:2013-03-06

  • 博文量
    776
  • 访问量
    1038307