iT邦幫忙

0

cmd抓取前幾天日期問題

cmd

因為某些檔案備份出來名稱是backup-2017-XX-XX.tsbak
想要用cmd刪除超過七天的檔案,
有找到cmd抓日期時間的寫法,但日期如果小於十都不會顯示0
導致刪除不了檔案,請問是哪邊需要更改?
謝謝!

echo wscript.echo dateadd("d",-7,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%

echo %y%%m%%d%
pause

http://ithelp.ithome.com.tw/upload/images/20170927/20098450IfPoYtwvF7.png

2 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 2017-09-27 20:33:32
最佳解答

把「小於」(LSS)

    if %m% LSS 9 set m=0%m%
    if %d% LSS 9 set d=0%d%

改成「小於或等於」(LEQ)

    if %m% LEQ 9 set m=0%m%
    if %d% LEQ 9 set d=0%d%

試試看

感謝海綿寶寶!

0
falas
iT邦研究生 3 級 ‧ 2017-09-28 10:00:40

也可以用forfiles這指令。以下是刪除7天前檔案的範例

@title Delete Backup File
rem iniPath1:
set iniPath1=Y:\DBBACKUP

C:\Windows\System32\attrib -S -H -R "%iniPath1%*.*" /S /D
C:\Windows\System32\forfiles /p "%iniPath1%" /s /d -7 /c "cmd /c del /q @path"

因為資料夾內有其他檔案,所以必須指定檔案名稱,不過也謝謝你提供的方法!

terryliu iT邦新手 5 級 ‧ 2017-09-30 17:31:58 檢舉

Falas大大的指令看起來少了一個反斜線...

C:\Windows\System32\attrib -S -H -R "%iniPath1%*.*" /S /D

%iniPath1% 好像應該是 %iniPath1%\

terryliu iT邦新手 5 級 ‧ 2017-09-30 17:35:45 檢舉

實測結果:Markdown 會影響留言結果... XD

我要發表回答

立即登入回答