回收站的定期清理功能的實現 win10 比較全和完整的方案

今天打開回收站,偶然間發現很久之前的回收站的文件還存在。我一直認爲回收站會定期清理,啊偶,結果這個Windows10讓我大失所望,然後要是等着微軟那邊更新的話,不知道要等多久,於是決定自己動手。閒言少敘,開始幹活。

首先寫一個bat

新建一個文本文檔複製如下代碼,然後文件的擴展名改爲bat

forfiles /p C:\$Recycle.Bin\S-1-5-21-3881054203-4149993165-1863143224-1001 /m *.* /s /d -35 /c "cmd /c del @path"
forfiles /p d:\$RECYCLE.BIN\S-1-5-21-3881054203-4149993165-1863143224-1001 /m *.* /s /d -35 /c "cmd /c del @path"
forfiles /p E:\$RECYCLE.BIN\S-1-5-21-3881054203-4149993165-1863143224-1001 /m *.* /s /d -35 /c "cmd /c del @path"

forfiles /p f:\$RECYCLE.BIN\S-1-5-21-3881054203-4149993165-1863143224-1001 /m *.* /s /d -35 /c "cmd /c del @path"


上面的是清空回收站的代碼。說明如下:

forfiles 是函數,cmd提供的 ,具體運用自己打 在cmd裏面用“?”查找。

/p是路徑,回收站是在每個盤下面都有的,你在C盤刪除的東西就會被保存到C盤的回收站,以此類推。因爲我的電腦有四個盤,所以用了這四句話,本人新手,不知道這個還能不能用代碼精簡,這個今後在請教大佬吧。盤符後面的東西也是路徑,我不知道每個人的電腦是不是一樣的路徑,具體的看法如下:把隱藏的文件顯示出來,並且把系統隱藏文件也顯示出來,帶$的文件夾你打開看看,看看裏面是不是有一個回收站的圖標,如果有的話恭喜你,打開回收站,複製一下地址欄的路徑就ok啦,路徑已經解決。

/m  匹配文件名,因爲是回收站,所以什麼類型的文件都可能出現,因此設置爲匹配任意類型。

/s  大概是打開子目錄的意思,具體沒詳細研究

/d  這個就是定期刪除的參數咯。-35是指刪除回收站35天之前的文件,這也就是所謂的定期刪除,這個可以任意改。本人會在下面給出詳細解釋,滿足各位伸手黨咯。

/c  即是刪除代碼,這個應該不需要變化,就是刪除的意思

至此刪除的批處理已經寫出來了,雙擊就可以運行咯。



but,本人是個懶人,每次都要我自己運行bat,我也懶得弄,於是要不咱們再弄個開機自啓。

下面開工

按win+R打開運行    (w in鍵就是那個微軟的標誌,)

然後輸入%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

這個就是啓動的文件夾,東西放進去之後開機就會自啓。同樣在裏面新建一個文本文檔

輸入如下代碼

set ws=WScript.CreateObject("WScript.Shell") 

ws.Run "F:\T_tools\Delete_Collect\delete.bat /start",0

我的bat的路徑是F:\T_tools\Delete_Collect  文件名是delete.bat所以你只要把這個改成對應的路徑就好咯,後面0的意思是界面不顯示。

然後把這個文本文檔的擴展名改爲vbs就ok

至此大功告成。

**********************************************分*****************************割******************************線

2018 5 13更

後來發現這個東西只能刪除文件,並不能刪除文件夾。

有些用戶喜歡在桌面上建立文件夾 ,然後把他們刪掉,如果回收站不能清除文件夾的話就很尷尬,下面開始準備解決方案

解決思路:因爲文件是定期刪除的,而且延伸到子目錄,這樣後來的文件夾就變成了空的文件夾,也就是說後面還缺一步刪除空文件夾的功能。下面的代碼便是刪除回收站裏面空白文件夾的bat代碼

for /f "tokens=*" %%a in ('dir /b /ad /s C:\$Recycle.Bin\S-1-5-21-3881054203-4149993165-1863143224-1001^|sort /r') do rd "%%a" /q 2>nul
for /f "tokens=*" %%a in ('dir /b /ad /s d:\$Recycle.Bin\S-1-5-21-3881054203-4149993165-1863143224-1001^|sort /r') do rd "%%a" /q 2>nul
for /f "tokens=*" %%a in ('dir /b /ad /s e:\$Recycle.Bin\S-1-5-21-3881054203-4149993165-1863143224-1001^|sort /r') do rd "%%a" /q 2>nul

for /f "tokens=*" %%a in ('dir /b /ad /s f:\$Recycle.Bin\S-1-5-21-3881054203-4149993165-1863143224-1001^|sort /r') do rd "%%a" /q 2>nul

這段我就不解釋了,大約就是吧回收站裏裏面的文件夾都列出來,然後空的文件夾直接就刪掉。所以即使你剛剛刪除了一個空的文件夾,運行這段代碼之後文件夾依然會被立刻刪除,不過一般大家空文件夾沒什麼作用,所以直接刪除這個小bug並沒有影響我們的正成使用,我反而覺得更好

同上,把這段代碼複製到上面的那個bat文件裏面就ok啦

說明:

這個不能刪除回收站裏面的文件夾,可能是“del"不能刪除文件的緣故吧,這個有待研究

附:FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]


描述:
    選擇一個文件(或一組文件)並在那個文件上
    執行一個命令。這有助於批處理作業。


參數列表:
    /P    pathname      表示開始搜索的路徑。默認文件夾是當前工作的
                        目錄 (.)。




    /M    searchmask    根據搜索掩碼搜索文件。默認搜索掩碼是 '*'。


    /S                  指導 forfiles 遞歸到子目錄。像 "DIR /S"。




    /C    command       表示爲每個文件執行的命令。命令字符串應該
                        用雙引號括起來。




                        默認命令是 "cmd /c echo @file"。下列變量
                        可以用在命令字符串中:


                        @file    - 返回文件名。
                        @fname   - 返回不帶擴展名的文件名。


                        @ext     - 只返回文件的擴展名。


                        @path    - 返回文件的完整路徑。
                        @relpath - 返回文件的相對路徑。


                        @isdir   - 如果文件類型是目錄,返回 "TRUE";
                                   如果是文件,返回 "FALSE"。
                        @fsize   - 以字節爲單位返回文件大小。


                        @fdate   - 返回文件上一次修改的日期。


                        @ftime   - 返回文件上一次修改的時間。




                        要在命令行包括特殊字符,字符請以 0xHH
                        形式使用十六進制代碼(例如,0x09 爲 tab)。


                        內部 CMD.exe 命令前面應以 "cmd /c" 開始。




    /D    date          選擇文件,其上一次修改日期大於或等於 (+),
                        或者小於或等於 (-) 用 "yyyy/MM/dd" 格式指定的日期;


                        或選擇文件,其上一次修改日期大於或等於 (+)
                        當前日期加 "dd" 天,或者小於或等於 (-) 當前


                        日期減 "dd" 天。有效的 "dd" 天數可以是
                        0 - 32768 範圍內的任何數字。如果沒有指定,


                        "+" 被當作默認符號。


    /?                  顯示此幫助消息。


示例:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 在 30 前就被更改。"
    FORFILES /D 2001/01/01
             /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
    FORFILES /D +2018/5/6 /C "cmd /c echo @fname 今天是新的。"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"

    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

不知道怎麼放圖片,就先不放圖咯

至此完結

有問題再找我吧  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章