2012-03-26 40 views
0

我需要一個批處理文件,它刪除所有僅包含特定文件(.svn)的空目錄和目錄。非常感謝您的幫助。刪除僅包含特定文件(批處理文件)的空目錄和目錄

例子:

Folder1      -- folder conatins subfolders with some files, not remove 
    Folder2     -- empty folder, folder should be deleted 
    Folder3     -- folder contains only .svn, folder should be deleted 
      .svn 
    Folder4     -- folder contains subfolder with file, not remove 
      Folder41   -- folder contains some file, not remove 
       somefile.dat 
    Folder5     -- folder contains some file, not remove 
      .svn 
      somefile.dat 
    Folder6     -- folder contains empty subfolders, folder should be deleted 
      Folder61   -- folder contains only specific file, folder should be deleted 
       .svn 

結果:

Folder1 
    Folder4  
      Folder41 
       somefile.dat 
    Folder5 
      .svn 
      somefile.dat 

回答

1

我是在多麼少的代碼這需要感到驚訝。最大的竅門是在DIR /B /S /AD的輸出上使用SORT /R,以便您可以在處理文件夾層次結構的父節點之前處理子節點。

我已經很快測試了代碼,但請以安全的方式測試自己。

此第一個版本假設爲".SVN"是完整的文件名。

@echo off 
setlocal disableDelayedExpansion 
for /f "eol=: delims=" %%A in ('dir /b /s /ad ^| sort /r') do (
    dir /b "%%A" | findstr /livx ".svn" >nul || rd /s /q "%%A" 
) 

第2版本是在你的意思"*.SVN"情況下,僅略作修改。只有一個FINDSTR選項被更改。

@echo off 
setlocal disableDelayedExpansion 
for /f "eol=: delims=" %%A in ('dir /b /s /ad ^| sort /r') do (
    dir /b "%%A" | findstr /live ".svn" >nul || rd /s /q "%%A" 
) 

更新:2012年11月6日

我只是意識到上述溶液(S)可以,如果一個非空文件夾命名爲.SVN被擊敗。該代碼應刪除空的文件夾或只包含名爲.SVN的文件。如果文件夾包含名爲.SVN的非空文件夾,則不應刪除該文件夾。

下面是第一個解決方案修復:

@echo off 
setlocal disableDelayedExpansion 
for /f "eol=: delims=" %%A in ('dir /b /s /ad ^| sort /r') do (
    dir /b "%%A"|findstr /livx ".svn" >nul||>nul 2>&1 dir /b /ad .svn||rd /s /q "%%A" 
) 

這裏是第二個解決方案

@echo off 
setlocal disableDelayedExpansion 
for /f "eol=: delims=" %%A in ('dir /b /s /ad ^| sort /r') do (
    dir /b "%%A"|findstr /live ".svn" >nul||>nul 2>&1 dir /b /ad *.svn||rd /s /q "%%A" 
) 
+0

Aaaand平時謹慎的修復與'爲/ F'適用:這將打破控制檯設置爲柵格字體和Unicode文件名;-)。並不是說我在那裏告訴你任何新東西,我想,鑑於你對批次的瞭解比我多:) – Joey 2012-03-26 14:49:52

+0

@Joey - 謝謝。是的,我之前看到過你使用Unicode報告問題,但沒有,在這種情況下我沒有想過。我不認爲我之前曾遇到過Unicode文件名,所以最好提供警告。 – dbenham 2012-03-26 15:15:41

+0

它工作正常。我試圖在最近三天寫劇本,所以非常感謝! – Dima 2012-03-26 15:23:28

相關問題