forfiles刪除文件夾
❶ 批處理只刪除一個眾多的文件夾里,昨天的文件夾
此前我也遇到過這樣的需求
批處理的確復雜 了些,但是創建個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"'