locked
請問要如何寫刪除檔案的bat檔案 RRS feed

  • 問題

  • 請問要如何建立刪除檔案的bat檔,主要是為了要設定給排程使用

     

    比如說C:\TEST\ 下有15個 .txt檔案

    1.要先判斷當檔案數大於15個的時候
    2.就刪除建立時間最前面的10個檔案 (是以檔案建立時間判斷 刪除時間先的檔案,
    讓檔案永遠保持最新的5個)

    2008年8月14日 上午 01:26

解答

  • 如果使用 VB Script 應該要用到正規表達式,那樣的寫法較不易看懂,所以改用 DOS 指令來作,比較簡單明瞭:
    1 @Echo off  
    2 Echo 只保留最新的 5 個 .txt 檔,其餘的皆刪除  
    3  
    4 Set strFilter=*.txt  
    5  
    6 dir/o-d/-p %strFilter% | FindStr "檔案" > FileCount.alex  
    7 For /F "tokens=1 delims=個 " %%a In (FileCount.alex) Do (Set count=%%a)  
    8 If %%count%% GTR 15 GOTO DelFiles Else GOTO End 
    9  
    10  
    11 :DelFiles  
    12 dir/o-d/-p/b %strFilter% > FileDel.alex  
    13 For /F "skip=5" %%a In (FileDel.alex) Do (Del %%a)  
    14 Del File*.alex  
    15  
    16 :End
    如果覺得上述的作法不好,於 在此 已有相關解答

    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    • 已提議為解答 Vincent Lin 2009年2月4日 上午 09:54
    • 已標示為解答 Vincent Lin 2009年2月13日 上午 02:55
    2009年2月1日 下午 03:18

所有回覆

  • 如何用vbs定期刪除和搬移特定檔案 
    此連結感謝由Alex Chuo提供


    感謝Alex Chuo的告知
    因為這段Script是以前複製下來用的
    所以等我寫上這篇時已經不知從哪個網頁得知的
    所以才會寫上
    來源已經不得而知了,如果知道作者是誰請告知
    雖然搜尋引擎可以搜尋,但不代表每個都是原創
    很多都為轉貼,根本不一定是原作者,所以才會這樣註明,
    因為我另做測試的結果,所以寫上此篇
    如果你覺得這樣有不當的地方我可以將此篇刪除或隱藏。

    分享工作上的經驗,Windows歡迎提出討論,Jerry_IT資訊技術手札 - 無名小站http://www.wretch.cc/blog/jerry0822 10/26影音教學(有聲音)Jerry_IT資訊教學影片技術手札(http://kili92.myweb.hinet.net/index.htm)
    目前找到的資料有很多都是轉貼,會寫到部落格裡的都是經過測試,再將之寫上,也會註明來源,如果時間一久不知來源我會寫上請知道來源的人告知我來源,我會再將他註明,如果原創者不希望轉貼請留言告知,我會遵從關閉,避免不必要的紛爭,寫此部落格單純為了紀錄工作遇過的問題,沒有任何侵犯原創的意思
    2009年2月1日 上午 04:38
  • Jerry0822_IT 表示:

     自動刪除固定資料夾的VBscript(可設天數)
    參考我這篇吧



    你的那篇跟  上的這篇:如何用vbs定期刪除和搬移特定檔案 有什麼不一樣?
    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    2009年2月1日 上午 06:27
  • 感謝Alex Chuo的告知
    因為這段Script是以前複製下來用的
    所以等我寫上這篇時已經不知從哪個網頁得知的
    所以才會寫上
    來源已經不得而知了,如果知道作者是誰請告知
    雖然搜尋引擎可以搜尋,但不代表每個都是原創
    很多都為轉貼,根本不一定是原作者,所以才會這樣註明,
    因為我另做測試的結果,所以寫上此篇
    如果你覺得這樣有不當的地方我可以將此篇刪除或隱藏。
    分享工作上的經驗,Windows歡迎提出討論,Jerry_IT資訊技術手札 - 無名小站http://www.wretch.cc/blog/jerry0822 10/26影音教學(有聲音)Jerry_IT資訊教學影片技術手札(http://kili92.myweb.hinet.net/index.htm)
    目前找到的資料有很多都是轉貼,會寫到部落格裡的都是經過測試,再將之寫上,也會註明來源,如果時間一久不知來源我會寫上請知道來源的人告知我來源,我會再將他註明,如果原創者不希望轉貼請留言告知,我會遵從關閉,避免不必要的紛爭,寫此部落格單純為了紀錄工作遇過的問題,沒有任何侵犯原創的意思
    2009年2月1日 上午 06:45
  • 如果使用 VB Script 應該要用到正規表達式,那樣的寫法較不易看懂,所以改用 DOS 指令來作,比較簡單明瞭:
    1 @Echo off  
    2 Echo 只保留最新的 5 個 .txt 檔,其餘的皆刪除  
    3  
    4 Set strFilter=*.txt  
    5  
    6 dir/o-d/-p %strFilter% | FindStr "檔案" > FileCount.alex  
    7 For /F "tokens=1 delims=個 " %%a In (FileCount.alex) Do (Set count=%%a)  
    8 If %%count%% GTR 15 GOTO DelFiles Else GOTO End 
    9  
    10  
    11 :DelFiles  
    12 dir/o-d/-p/b %strFilter% > FileDel.alex  
    13 For /F "skip=5" %%a In (FileDel.alex) Do (Del %%a)  
    14 Del File*.alex  
    15  
    16 :End
    如果覺得上述的作法不好,於 在此 已有相關解答

    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    • 已提議為解答 Vincent Lin 2009年2月4日 上午 09:54
    • 已標示為解答 Vincent Lin 2009年2月13日 上午 02:55
    2009年2月1日 下午 03:18