• 2

請問利用批次檔刪除 [日期格式命名資料夾] 的寫法

某個軟體每天會多次自動建立備份的資料夾,固定放在D:\BACK\路徑下

新建立的資料夾名稱格式是:軟體簡稱-日期-當天第幾次備份 LHT-20190101-1


目前計畫是利用工作排程來執行批次檔,每天開機時自動刪除超過10天的備份資料夾

請問這個批次檔要如何寫?
2019-01-04 16:33 發佈
文章關鍵字 寫法 格式
提示 forfiles 指令,應該可以幫助你解決問題。
----Begin date-10.vbs----
dt=dateadd("d",-10,date)
yy=year(dt)
mm=Right("0" & Month(dt),2)
dd=Right("0" & Day(dt),2)
wscript.echo "for /d %d in ( LHT-"&yy&mm&dd&"-* ) do echo rmdir /s/q %d"
--- End date-10.vbs ---

----Begin clean-10.bat----
cscript /nologo date-10.vbs > r.bat
call r.bat
del r.bat
--- End clean-10.bat ---


排定 clean-10.bat 即可

lun0147 wrote:
提示 forfiles 指令,應該可以幫助你解決問題。


關於 forfiles,網路爬文都是針對 [檔案時間] 去計算刪除目標 [檔案]

我需要的是 [指定檔案夾的日期格式名稱] 的方式去計算刪除目標 [檔案夾]

如果 forfiles 可以做到,還請大大給予示範一下指令怎麼下

chuway wrote:
----Begin date-10.vbs----
dt=dateadd("d",-10,date)
yy=year(dt)
mm=Right("0" & Month(dt),2)
dd=Right("0" & Day(dt),2)
wscript.echo "for /d %d in ( LHT-"&yy&mm&dd&"-* ) do echo rmdir /s/q %d"
--- End date-10.vbs ---

----Begin clean-10.bat----
cscript /nologo date-10.vbs > r.bat
call r.bat
del r.bat
--- End clean-10.bat ---

排定 clean-10.bat 即可


感謝大大

原來要用VB指令,我在BAT的方式爬文好久...
REM 取得年月日
SET TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
echo %TODAY%

REM 產生的目錄
SET PATH=C:\LHT-%TODAY%-

REM 取得不存在的批次序號
for /l %%i in (1 1 100) do (
if not exist %PATH%%%i (
SET PATH=%PATH%%%i
goto END
)
)
:END
REM 建立目錄
echo %PATH%
mkdir %PATH%

肚子三層非一日之饞 wrote:
關於 forfiles...(恕刪)

範例

forfiles /p C:\backup /m *.bak /d -3 /c "cmd /c del @path"

建個bat在backup下,直接輸入上述指令,執行時所有超過三天時間的.bak全刪,再去建立一個工作排程,結案

其他需求請自行修改
up2u wrote:
範例

forfiles /p C:\backup /m *.bak /d -3 /c "cmd /c del @path"

建個bat在backup下,直接輸入上述指令,執行時所有超過三天時間的.bak全刪,再去建立一個工作排程,結案


網路爬文已經看到類似範本

這個指令是根據「檔案建立時間」來刪除「超過N天」的 *.BAK 「檔案」

我需要的是刪除有日期格式的「資料夾」

你提供的範例無法做到我的需求

補充:目前測試forfiles的方式,對隱藏檔和唯讀檔無效




Kenny_Din wrote:
REM 取得年月日
SET TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
echo %TODAY%

REM 產生的目錄
SET PATH=C:\LHT-%TODAY%-

REM 取得不存在的批次序號
for /l %%i in (1 1 100) do (
if not exist %PATH%%%i (
SET PATH=%PATH%%%i
goto END
)
)
:END
REM 建立目錄
echo %PATH%
mkdir %PATH%


抱歉

我需要的是「刪除」資料夾

你的指令看起來像是「建立」資料夾
REM 取得刪除年月日 (today-10)
@echo off
echo wscript.echo dateadd("d",-10,date) > %tmp%\tmp.vbs
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
if %m% LSS 9 set m=0%m%
if %d% LSS 9 set d=0%d%
set DELETEDATE=%y%%m%%d%
echo %DELETEDATE%

REM 預計要刪除的目錄
SET PATH=C:\LHT-%DELETEDATE%-

REM 刪除存在的目錄
for /l %%i in (1 1 100) do (
if exist %PATH%%%i (
echo %PATH%%%i
rmdir /s/q %PATH%%%i
)
)
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?