發表文章

目前顯示的是 8月, 2019的文章

cmd刪除檔案

DOS 指令- forfiles ,參數不多,簡單易用: /p 路徑名稱  查詢對象,省略時為現在所處資料夾 /m 檔名限制  可配合萬用字元限定檔名或副檔名,例如:*.log、ex1610*.log /s  指定搜尋範圍包含子目錄及其下層目錄 /c "對找到檔案執行的動作"  例如:"cmd /c del @path"為刪除檔案,省略參數時預設為"cmd /c echo @file",將顯示找到的檔案名稱 /d 數字或日期  限定檔案上次修改日期範圍,+代表大於等於,-代表小於等於,可以指定日期,例如:/d +2016/10/01(10/1當天及之後異動的檔案)、/d -2016/10/10(10/10當天與之前修改過的檔案);或指定數字今天起算幾天前的檔案,例如:/d -3(三天前)/d +0(今天) 撰寫 /c 參數時,有以下變數可用: @file 檔名 @fname 檔名去掉副檔名 @ext 副檔名 @path 完整路徑 @relpath 與 /p 為基準的相對路徑 @isdir 是否為資料夾 @fsize 檔案大小 @fdate 檔案上次修改日期 @ftime 檔案上次修改時間 所以刪除30天以前的Log檔可以寫成: forfiles /p D:\Logs\IISLogs /s /m *.log /d –30 /c "cmd /c del @path" 另外我也發現,forfiles 很適合解決之前提過 將 DIR 結果轉為檔案清單 的需求,還省去 Replace 計算相對路徑的功夫,是更好的選擇: forfiles /p D:\Set9527 /s /c "cmd /c echo @relpath" 參考來源: https://blog.darkthread.net/blog/forfiles/