bat 删除某路径7天前的文件

@echo off
forfiles /p D:\logstash-1.4.2\bin\ /m *.log -d -7  /C "cmd /c del /f @path\"
forfiles /p D:\logstash-1.4.2\bin\ /m *.mdmp -d -7  /C "cmd /c del /f @path\"

pause

 

forfiles:

/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"

要列出驱动器 C: 上的所有目录,请键入:

forfiles /p c:\ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"

要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:

forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file :date >= 100 days"

要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的所有文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入:

forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"

要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:

forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:

要列出驱动器 C: 上的所有批处理文件,请键入:

forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file is a batch file"

要列出驱动器 C: 上的所有目录,请键入:

forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"

要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:

forfiles /p c:\ /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"

要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的所有文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入:

forfiles /p c:\ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"

要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:

forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"

 

### 回答1: 您好,下面是删除文件夹下 7 天前文件,但保留名字为 test 的文件的批处理脚本: ``` @echo off rem 定义文件夹路径变量 set folder_path=D:\Test rem 切换到文件夹 cd /d %folder_path% rem 删除文件夹下 7 天前文件,但保留名字为 test 的文件 forfiles -p %folder_path% -s -m *.* -d -7 -c "cmd /c if not @fname=='test' del @path" echo 删除完毕 pause ``` 请注意,上面的脚本假定文件夹路径为 `D:\Test`,如果需要更改文件夹路径,请修改 `set folder_path=D:\Test` 路径。 如果您需要更多帮助,请告诉我。 ### 回答2: 可以使用以下的bat脚本来实现删除文件夹下7天前文件,但是保留名字为test的文件: ```bat @echo off set folderPath=C:\path\to\your\folder // 替换为你的文件夹路径 set keepFileName=test forfiles /p "%folderPath%" /s /m *.* /d -7 /c "cmd /c if @isdir==FALSE del @path && if @fname==%keepFileName% echo %keepFileName% exist && pause" ``` 在上面的脚本,将 "C:\path\to\your\folder" 替换为你需要删除文件文件夹路径。脚本使用了`forfiles`命令来扫描文件夹下的文件,`/p`参数指定了要扫描的文件夹路径,`/s`参数表示递归查找子文件夹,`/m`参数指定了匹配的文件名,`/d -7`参数表示只选择7天前文件删除操作通过执行 `del @path` 来实现。但是在删除之前,脚本还会判断文件名是否与`%keepFileName%`相同,如果相同则不会删除,这样就可以保留名为`test`的文件。 最后的 `echo %keepFileName% exist && pause` 是为了显示名称为`test`的文件是否存在,并暂停脚本以方便查看结果。如果不需要显示可删除此行。 ### 回答3: 可以使用以下的批处理脚本来删除文件夹下7天前文件,但保留名字为test的文件: ``` @echo off setlocal set "folderPath=C:\目标文件夹路径" forfiles /p %folderPath% /s /m *.* /c "cmd /c if /I @isdir==FALSE if @fdate ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值