特定のフォルダとサブフォルダを除くすべてのフォルダを削除します

特定のフォルダとサブフォルダを除くすべてのフォルダを削除します

複数のパーティションを持つ SSD があります。J:\ で作業する必要があり、次のフォルダーを除く J: 内のすべてのフォルダーを削除する必要があります。

J:\System Volume Information
J:\$RECYCLE.BIN
J:\New
J:\Old Stuff

そして次のサブフォルダー:

J:\Papers\Folder
J:\Room\Main Documents
J:\Year\Origin\Part
J:\Year\Origin\Part Two

いろいろ検索して読んだ後、次のコードを書きました。

@ECHO OFF
SETLOCAL
SET "sourcedir=J:\"
SET "keepdir=System Volume Information"
SET "keepdir=$RECYCLE.BIN"
SET "keepdir=New"
SET "keepdir=Old Stuff"
SET "keepdir=Papers\Folder"
SET "keepdir=Room\Main Documents"
SET "keepdir=Year\Origin\Part"
SET "keepdir=Year\Origin\Part Two"
FOR /d %%a IN ("%sourcedir%\*") DO IF /i NOT "%%~nxa"=="%keepdir%" RD /S /Q "%%a"
GOTO :EOF

残念ながら、上記のコードは機能しません (J: 内のすべてが削除されます)。

答え1

@echo off & cd /d J:\ || goto :eOf 

for /f ^delims^= %%i in =;('@dir /ogn /b /s /a:d
    ')do =;( type "%~f0" | 1>nul find /i "%%~fi" 
           );= || 1>nul 2>&1 rmdir /q /s "%%~fi"

goto :eof

:: Keep the list in the lines below the
:: full path of the folders that remained!

J:\New
J:\Old Stuff
J:\$RECYCLE.BIN
J:\Papers\Folder
J:\Year\Origin\Part
J:\Room\Main Documents
J:\Year\Origin\Part Two
J:\System Volume Information

1.保持したいフォルダーのリストを含むバッチを使用します。

J:\New
J:\Old Stuff
J:\$RECYCLE.BIN
J:\Papers\Folder
J:\Year\Origin\Part
J:\Room\Main Documents
J:\Year\Origin\Part Two
J:\System Volume Information

2.ループを使用してフォルダツリーを一覧表示する

for /f ^delims^= %%i in =;('@dir /ogn /b /s /a:d
    ')do

3.ループ内の各フォルダーに対して、bat 自体のタイプを使用して、フォルダー/パスがそこに表示されるかどうかを確認します。

type "%~f0" | 1>nul find /i "%%~fi"

4.フォルダー/パスが見つからない場合 ( ||)、削除します。

type ...  find .. || rmdir /q /s "%%~fi"

5.ループを終了して、ファイルを終了します。

goto :eOf

さらに詳しい情報:

答え2

提案:

  1. J:\> dir /s /b /ad >DirsToRemove.bat
    リストに記入する全てJ: (現在のドライブ) の DIRS を DirsToRemove.bat ファイルに追加します。
  2. そのファイルを編集するには、
    メモ帳 (ワードパッドではありません) が使えますが、より高度なテキスト エディターを使用することをお勧めします。
  3. 各行でrmdir /s /qdirname の前に追加し、名前にスペース文字がある場合は
    名前を引用符で囲みます。 すべての名前に引用符を使用することもできます。=>"
    rmdir /s /q "name"
    より高度なテキスト エディターではマクロを使用できます。マクロの使用は、記録を開始し、1 行を編集し、記録を停止するだけです。その後、ショートカット キーを使用して、必要な回数だけマクロを起動できます。
  4. 保持したいディレクトリを含む行は必ず削除してください。
  5. 保存して...
  6. するJ:\> .\DirsToRemove.bat

同じようなことを何度か繰り返して行うと、手元のタスクを完了するのに通常 1 ~ 2 分しかかかりません。

関連情報