- 軟件大?。?span>50KB
- 軟件語言:中文
- 軟件類型:
- 軟件類別:免費軟件 / EXE文件
- 更新時間:2019-01-16 10:07
- 運行環(huán)境:WinAll, WinXP
- 軟件等級:
- 軟件廠商:
- 官方網(wǎng)站:http://m.aimjoke.net/file/
3.13M/中文/10.0
213KB/中文/10.0
2.92M/中文/10.0
200KB/中文/0.2
390KB/中文/10.0
forfiles.exe是一款系統(tǒng)自帶的批量刪除和處理7天以前文件的工具,當(dāng)用戶電腦上缺失這一文件時,往往會導(dǎo)致批處理失效等等,此工具完美適用于win2003及以上所有系統(tǒng),歡迎下載。
首先,要說明的是,forfiles是Windows Server 2003內(nèi)置的命令行文件,其它系統(tǒng)未必適用。不過,win2003以上的系統(tǒng),包括win7、windows server 2008均適用哦。
1. 用批處理文件刪除當(dāng)前目錄下 7 天以前的擴(kuò)展名為bkf文件(以當(dāng)前系統(tǒng)時間為基準(zhǔn))
例如:
復(fù)制代碼代碼示例:
forfiles /m *.bkf /d -7 /c "cmd /c del @file /f"
2. forfiles 自動刪除7天前文件 (以當(dāng)前系統(tǒng)時間為基準(zhǔn))
示例:
復(fù)制代碼代碼示例:
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path"
d:\test換成你要的目錄路徑; /d -7 指刪除7天以前文件。
3. 刪除所有的空目錄(以刪除d:\test目錄下為例) :
復(fù)制代碼代碼示例:
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i"
del d:\kill.txt
4. 先刪7 天以前文件,再刪所有的空目錄 ;把以下復(fù)制到bat文件中。
復(fù)制代碼代碼示例:
@echo off
forfiles /p "d:\test" /s /m *.* /d -7 /c "cmd /c del @path"
dir /ad/b/s d:\test\ |sort /r >d:\kill.txt
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i"
del d:\kill.txt
5. forfiles 命令的用法及參數(shù):
forfiles /p <目標(biāo)目錄名> /d <天數(shù)> /c <執(zhí)行的命令>
/p 指定了要在哪個目錄里查找文件,默認(rèn)是當(dāng)前工作目錄。
/d 指定一個日期或天數(shù),用于比較文件的最后修改日期是否符合條件。
/c 對每個找到的文件執(zhí)行的命令。
例1.要把在C盤根目錄下最后修改日期大于或等于2010年1月7日的文件復(fù)制到D盤根目錄下:
復(fù)制代碼代碼示例:
forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d:\"
例2.刪除在C盤backup目錄下最后修改日期在10天前的文件:
復(fù)制代碼代碼示例:
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file … && del /f @path"
6. forfiles /p 包含要刪除文件的完整路徑(如:F:\Logfiles) /m *.log -d -7 /c "cmd /c del /f @path"
相關(guān)參數(shù)及命令
/p <Path> : 指定開始搜索文件的位置,如果不指定則默認(rèn)為當(dāng)前目錄。
/m <SearchMask> : 文件查找所使用的通配符如代碼中的"*.log"則為所有日志文件,當(dāng)然也可以指定諸如"manmee_*.log"這樣以manmee開頭的所有日志文件。如果不指定此參數(shù)則默認(rèn)為"*.*"。
/d [{+|-}][{<Date>|<Days>}] : 指定想選擇文件的最后修改時間,上文中用了 "/d -7" 表示所有以當(dāng)天為基礎(chǔ),7天以前的文件。當(dāng)然這里還可以指定具體時間,例如:"/d -01/7/2010"這樣所有早于2010年1月7日的文件。注意指定的時間必須是"MM/DD/YYYY"的格式。
/c 對所有文件以此執(zhí)行指定的命令,命令體須在雙引號(")內(nèi),默認(rèn)是"cmd /c echo @file"。上文中用到的是"cmd /c del /f @path"刪除指定文件。(這里的@file 和 @path 為變量,下文中將解釋。)
上文中用到的參數(shù):
@PATH : 表示文件的完整的路徑。
@File : 表示文件名稱。
再來介紹下刪除文件夾的操作。
forfiles /p 包含文件夾的路徑(如:F:\) /m 文件夾名稱(如:LogFiles) -d 0 /c "cmd /c if @ISDIR== true rd /s/q @path"
注意這里的"包含文件夾的路徑"不能包含要刪除的文件夾,如以上代碼所表示的就是,在F盤中查找名為LogFiles的文件或文件夾(不能指定查找文件夾,不過在刪除時我們做了判斷)。
這里出現(xiàn)了一個新的參數(shù)"@ISDIR"他用于判斷當(dāng)前文件類型是否是"文件夾類型",如果是則為true否則為false。
最后再將代碼保存為批處理文件,然后加入計劃任務(wù)定期執(zhí)行即可。
分享一段我的批處理文件內(nèi)容:
復(fù)制代碼代碼示例:
@echo off
rem ******************************
rem * 按時間刪除文件目錄的批處理 *
rem ******************************
rem 設(shè)置臨時目錄的路徑
set tempDir=%tmp%\remove_%date:~0,10%
if not exist %tempDir% md %tempDir%
rem 設(shè)置處理日期的腳本文件的路徑
set scriptFile=%tempDir%\get_date.vbs
rem 獲得要保留的天數(shù)
set days=%~1
if "%days%" == "" goto printUsage
rem 獲得目標(biāo)目錄的路徑
set dirPath=%~2
if "%dirPath%" == "" set dirPath=.
rem 獲得要操作的文件形式
set fileSpec=%~3
if "%fileSpec%" == "" set fileSpec=*.*
rem 生成計算日期的腳本文件并獲得刪除的截止日期
echo d=date()-%1 > %scriptFile%
echo s=right("0000" ^& year(d),4) ^& "-" ^& right("00" ^& month(d),2) ^& "-" ^& right("00"
^& day(d),2) 》 %scriptFile%
echo wscript.echo s 》 %scriptFile%
for /f %%i in ('cscript /nologo %scriptFile%') do set lastDate=%%i
rem 處理目標(biāo)目錄里的每個對象
for /f "tokens=1,2,3* delims=<> " %%i in ('dir "%dirPath%\%fileSpec%" /a /-c /tc') do call
:proc "%%i" "%%j" "%%k" "%%l"
goto :done
rem 處理目標(biāo)目錄里對象的過程
:proc
rem 獲得對象的創(chuàng)建日期并判斷是否為有效格式
set fileDate=%~1
echo %fileDate% | findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" > nul
if errorlevel 1 goto end
rem 獲得對象的類型
set fileType=%~3
if "%fileType%" == "" goto end
rem 獲得對象的名稱
set fileName=%~4
if "%fileName%" == "" goto end
if "%fileName%" == "." goto end
if "%fileName%" == "" goto end
if "%fileName%" == "字節(jié)" goto end
if "%fileName%" == "可用字節(jié)" goto end
rem 判斷對象日期是否小于或等于刪除的截止日期
if "%fileDate:~0,10%" leq "%lastDate%" (
echo deleting "%fileName%" …
if "%fileType%" == "DIR" ( rd /s /q "%dirPath%\%fileName%" ) else ( del /q /f "%dirPath%\%
fileName%" )
)
goto end
:error
echo An error occurred during backuping.
:done
rd /s /q %tempDir%
goto end
:printUsage
echo Usage: %0 ^<Days^> [Work directory] [Target file specification (can include wildcards)]
goto end
:end
請描述您所遇到的錯誤,我們將盡快予以修正,謝謝!
*必填項,請輸入內(nèi)容