windows server 2003內建的命令列檔案,不適合於xp系統
1. 用批處理檔案刪除當前目錄下 7 天以前的擴充套件名為bkf檔案(以當前系統時間為基準)
示例: forfiles /m *.bkf /d -7 /c "cmd /c del @file /f"
2. forfiles 自動刪除7天前檔案 (以當前系統時間為基準)
示例: forfiles /p "d:/test" /s /m *.* /d -7 /c "cmd /c del @path"
d:/test換成你要的目錄路徑; /d -7 指刪除7天以前檔案。
3. 刪除所有的空目錄(以刪除d:/test目錄下為例) :
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 天以前檔案,再刪所有的空目錄 ;把以下複製到bat檔案中。
@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 命令的用法及引數:
forfiles /p 《目標目錄名》 /d 《天數》 /c 《執行的命令》
/p 指定了要在哪個目錄裡查詢檔案,預設是當前工作目錄。
/d 指定乙個日期或天數,用於比較檔案的最後修改日期是否符合條件。
/c 對每個找到的檔案執行的命令。
例1.要把在c盤根目錄下最後修改日期大於或等於2023年1月7日的檔案複製到d盤根目錄下:
forfiles /p "c:/" /d "2007-7-1" /c "cmd /c copy @path d:/"
例2.刪除在c盤backup目錄下最後修改日期在10天前的檔案:
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"
解釋一下相關引數及命令
/p : 指定開始搜尋檔案的位置,如果不指定則預設為當前目錄。
/m : 檔案查詢所使用的萬用字元如**中的"*.log"則為所有日誌檔案,當然也可以指定諸
如"manmee_*.log"這樣以manmee開頭的所有日誌檔案。如果不指定此引數則預設為"*.*"。
/d : 指定想選擇檔案的最後修改時間,上文中用了 "/d -7" 表示所有以當
天為基礎,7天以前的檔案。當然這裡還可以指定具體時間,例如:"/d -01/7/2010"這樣所有早於2023年
1月7日的檔案。注意指定的時間必須是"mm/dd/yyyy"的格式。
/c 對所有檔案以此執行指定的命令,命令體須在雙引號(")內,預設是"cmd /c echo @file"。上文中用
到的是"cmd /c del /f @path"刪除指定檔案。(這裡的@file 和 @path 為變數,下文中將解釋。)
下面說一下上文中用到的引數:
@path : 表示檔案的完整的路徑。
@file : 表示檔名稱。
接下來我們看看刪除資料夾的操作,如果你看了上面的介紹,相信這命令你一看就能看懂。
forfiles /p 包含資料夾的路徑(如:f:/) /m 資料夾名稱(如:logfiles) -d 0 /c "cmd /c if @isdir
== true rd /s/q @path"
注意這裡的"包含資料夾的路徑"不能包含要刪除的資料夾,如以上**所表示的就是,在f盤中查詢名為
logfiles的檔案或資料夾(不能指定查詢檔案夾,不過在刪除時我們做了判斷)。
還有就是這裡出現了乙個新的引數"@isdir"他用於判斷當前檔案型別是否是"資料夾型別",如果是則為
true否則為false。
相信到這大家就明白了,最後再將**儲存為批處理檔案,然後加入計畫任務定期執行即可。
看了上面的例子,覺得在 windows server 2003 下面要刪除老檔案很簡單吧。
但如果作業系統是 windows 2000/xp 就比較麻煩,因為它們沒有forfiles命令,只能靠自己寫批處理來
實現了。
下面是我寫的批處理檔案內容:
@echo off
rem ******************************
rem * 按時間刪除檔案目錄的批處理 *
rem ******************************
rem 設定臨時目錄的路徑
set tempdir=%tmp%/remove_%date:~0,10%
if not exist %tempdir% md %tempdir%
rem 設定處理日期的指令碼檔案的路徑
set scriptfile=%tempdir%/get_date.vbs
rem 獲得要保留的天數
set days=%~1
if "%days%" == "" goto printusage
rem 獲得目標目錄的路徑
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 處理目標目錄裡的每個物件
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 處理目標目錄裡物件的過程
:proc
rem 獲得物件的建立日期並判斷是否為有效格式
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%" == "位元組" goto end
if "%filename%" == "可用位元組" 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 ^[work directory] [target file specification (can include wildcards)]
goto end
:end
主要是利用windows的指令碼功能來計算要刪除檔案的截止日期,然後for加dir命令來提取檔案的日期進行
判斷。關於forfiles和for的詳細資訊,可以在windows的幫助與支援中找到。
DOS批處理檔案
dos下的可執行檔案有三種,分別是exe,com和bat。其中,exe和com檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非...
DOS批處理檔案
dos下的可執行檔案有三種,分別是exe,com和bat。其中,exe和com檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非...
DOS 批處理檔案
dos 下的可執行檔案有三種,分別是exe,和bat。其中,exe和 檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非常大,使...