当前位置:首页 » 文件管理 » forfiles删除文件夹

forfiles删除文件夹

发布时间: 2022-07-01 07:26:32

❶ 批处理只删除一个众多的文件夹里,昨天的文件夹

此前我也遇到过这样的需求

批处理的确复杂 了些,但是创建个bat放到计划任务里也的确省了不少事

在批处理里去判断一个文件夹的创建日期至今相隔的天数,还得用到儒略日这个概念,可以先了解一下;建议搜索 Julian_Day_Number

分享一下我整理的完整代码:

@ECHOOFF&

REM删除指定天数前创建的目录(所有子目录及文件)

REM指定维护的目录

SETFOLDER=d: emps

REM设置超限天数

SET/aXDay=1

REM记录日志

SETSHECULED_LOG_DIR=d: emps

IFNOTEXIST%SHECULED_LOG_DIR%MKDIR%SHECULED_LOG_DIR%

SETTODAY=%date:~0,10%

SETDATE_STR=%TODAY:/=%

SETLOG=%SHECULED_LOG_DIR% d-expired-directories-%DATE_STR%.LOG

echoStart------(%date%%time%)------>>%LOG%

echoGetAllExpiredDirectories>>%LOG%

REM2021-04-15=2459320此时的儒略日

CALL:DateToJDN"%TODAY%"JDNToday

FOR/d%%ain("%FOLDER%*")DO(

FOR/f"tokens=1,4*"%%IIN('dir/ad/tc"%%~a"^|findstr"^[0-9]"')DO(

CALL:DateToJDN"%%I"filedate

SET/adiffdays=JDNToday-filedate

REM删除指令:RD/S/D

REM在确认安全的前提下,替换下方的ECHO

IF!diffdays!EQU%XDay%ECHO"%%~a\%%~J">>%LOG%

REM EQU - 等于,NEQ - 不等于,LSS - 小于,LEQ - 小于或等于
REM GTR - 大于, GEQ -
大于或等于

)

)

echoDone------(%date%%time%)------>>%LOG%

GOTO:eof

REM返回给定日期的儒略日(JulianDayNumber)

REM需注意系统日期的格式

:DateToJDN"yyyy/mm/ddDD"jdn=

setlocal

setdate=%~1

::set/Ayy=%date:~-4%,mm=1%date:~-10,2%%%100,dd=1%date:~-7,2%%%100

set/Ayy=%date:~0,4%,mm=1%date:~5,2%%%100,dd=1%date:~8,2%%%100

set/Aa=mm-14,jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075

endlocal&set%2=%jdn%

exit/B



❷ forfiles 怎么删除N天前的文件夹

@ISDIR == true 要大写

❸ windows批处理删除文件命令

forfiles/pF:	est/s/mdb_*.dmp/d-2/c"cmd/cdel@file"

修改数字2即可删除你指定天数前的文件。

❹ Windows下删除一定日期前文件夹及其文件的批处理怎么写

不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
@echo off
rem 查找并删除当前目录里指定天数之前的以特定格式日期命名的文件夹
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set ago=-365
>"%tmp%\v.v" echo;d=date+(%ago%):WSH.echo right(Year(d),4) ^& right("0" ^& Month(d),2) ^& right("0" ^& Day(d),2)
set agoday=&for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\v.v"') do set agoday=%%a
if not defined agoday (pause&exit)
echo;界定日期=%agoday%
for /f "delims=" %%a in ('dir /ad-h/b^|findstr /be "[0-9][0-9]*"') do (
if "%%~nxa" leq "%agoday%" echo;"%%a"
)
echo;%#% +%$%%$%/%@% %z%
pause
exit

❺ 批处理或者Forfiles 删除远程连接文件

forfiles/p"文件夹路径"/d-30/m*/c"cmd/cdel/f/q@path"

删除30天前的,如果要递归子目录,请加上/s参数。

❻ 请问:如何批处理删除文件夹及其所有子文件夹下N天前所有文件

当文件夹里面的某一个文件当前时间被修改过,这个文件夹的修改时间就会变成当前时间.
以删除30天以前的文件夹为例.如果一个文件夹的最后时间都是30天以前.
那么在30天以内该文件夹下的所有文件都没有被修改过.
而一个文件夹如果不在30天以前,那么也可能文件夹下的某些文件是在30天以前的.
根据这个思路.先删除30天以前的文件夹.
再删除30天以内文件夹下所有30天以前的文件.
那么就结果就如下:
forfiles -D -30 /M * /C "cmd /c rd @file /s /q"
forfiles -D -30 /S /M * /C "cmd /c del @path /s /q"
两行批处理即可搞定

❼ 如何用windows指令删除文件夹里的第一个第二个等文件

其实这种情况,可以利用天数来决定删除。
比如删除几天前的。这样比您第一到第N个方便。

forfiles /p "某个文件夹的路径" /s /m "要匹配的文件格式例如*.jpg" /d -10 /c "cmd /c del /f /q @path"

/d后面的-10就是代表处理十天前的。

❽ 如何用DOS命令删除N天以前的文件

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 +2006-11-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"

删除三十天前的文件forfiles /p "C:\temp" /s /m *.* /d -30 /c "cmd /c del @path"

❾ windows定时删除文件(可用于删除系统文件)

WINDOWS定时自动删除文件

一、说明
使用windows系统自动的forfiles.exe程序来删除文件。
二、创建bat批处理文件
在forfiles.exe命令文件的同一目录下创建bat批处理文件,这里创建的名为forfiles_del.bat批处理文件。该批处理文件的内容:
该内容的意思是删除“D:\ORACLE笔记”目录下30天前的所有文件。
三、创建任务计划
点击[开始]—>[所有程序]—>[附件]—>[系统工具]>[任务计划程序]。
选择开始时间,和任务执行频率,点【下一步】。
选择“希望该任务执行什么操作?”,默认点击【下一步】。

❿ 如何使用FORFILES命令来删除sql Server备份

我用xp_cmdshell命令和FORFILES命令来处理类似于你所列出的过程。可以从Microsoft
TechNet中获得FORFILES的可靠信息,但是在这篇文章中,我将涉及FORFILES大量的结构和使用方法来达到你的目的。
该FORFILES命令将选取文件的一个子集并且针对这个子集执行一个命令。这个命令需要下面的参数和接受下面的变量。
参数参数名描述/p路径/m检索屏蔽
(默认情况下是
*.*)
/s如果包含这个参数,那么子目录将会被递归地检索。
/c针对结果集中的每一个文件执行命令,命令必须包含在双引号中,默认情况是"cmd
c/
echo
@file"
/d针对文件选择的日期范围,把最新的更改日期当作文件标准。当/d参数是MM/DD/YYYY格式时,满足指定的+/-日期标准的文件也包含在内。当文件格式是smallint
(-32,768
-
32,768)文件+/-文件并且带着一个更改日期+/-时,从当前日期到该日期的时间数目将会包含在这个文件结果集中。
变量变量名描述
@FILE文件名
@FNAME无扩展的文件名
@EXT文件扩展名
@PATH文件绝对路经
@RELPATH文件的相对路径
@ISDIR如果文件类型是一个目录,那么判断是否是TRUE
@FSIZE文件大小(用字节衡量)
@FDATE文件上的最新更改日期邮戳
@FTIME文件上的最新更改时间邮戳
利用这些参数可以构造下面的例子来解决你删除备份脚本文件的难题。你可以基于更改时间/日期或者备份类型来创建脚本。你甚至可以构造能够同时参照两种标准的脚本。
我们将仔细看看这些可能的脚本。记住,你将从T-SQL代码内部执行这个过程,所以你需要在一个xp_cmdshell访问中以EXEC
xp_cmdshell
'FORFILES
COMMAND'的格式总结这些语句。请注意,在所有的例子中我都会使用/Q

/F标签来作为删除命令。这意味着这个命令将使用安静模式(/Q)甚至删除只能读的文件(/F)。
例子当文件更改日期晚于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"'

热点内容
哪些车有配置前后防撞钢梁 发布:2025-03-16 22:55:35 浏览:727
服务器怎么设置外网访问 发布:2025-03-16 22:53:03 浏览:184
安卓手机如何绕过缓存软件 发布:2025-03-16 22:35:16 浏览:241
c语言求职 发布:2025-03-16 22:34:23 浏览:429
在线教育培训源码 发布:2025-03-16 22:31:57 浏览:233
反编译vb工具 发布:2025-03-16 22:27:04 浏览:353
安卓流程为什么越来越多 发布:2025-03-16 22:26:50 浏览:933
五轴编程模型 发布:2025-03-16 22:17:48 浏览:181
linuxc函数库 发布:2025-03-16 22:03:33 浏览:921
iphone最新版系统从哪里改密码 发布:2025-03-16 21:56:19 浏览:596