여러 파티션이 있는 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
삼.루프의 각 폴더에 대해 bat 자체의 유형을 사용하고 폴더/경로가 거기에 나타나는지 확인하십시오.
type "%~f0" | 1>nul find /i "%%~fi"
4.||
욕실에서 폴더/경로를 찾을 수 없는 경우( ) 삭제하세요.
type ... find .. || rmdir /q /s "%%~fi"
5.루프를 마치고 파일을 종료합니다.
goto :eOf
추가 내용:
답변2
제안:
J:\> dir /s /b /ad >DirsToRemove.bat
목록에 표시모두J의 DIRS: (현재 드라이브)를 DirsToRemove.bat 파일에 추가합니다.- 해당 파일을 편집하면
메모장이 작동하지만(워드패드 아님) 고급 텍스트 편집기를 선호합니다. - 모든 줄에서
rmdir /s /q
dirname 앞에 추가하고, 이름에 공백 문자가 있으면
이름을 -quotes로 묶습니다 . 모든 이름에 따옴표를 사용하는 것도 괜찮습니다. =>"
rmdir /s /q "name"
고급 텍스트 편집기를 사용하면 매크로를 사용할 수 있습니다. 매크로를 사용하는 것은 녹음 시작, 한 줄 편집, 녹음 중지만큼 쉬울 수 있습니다. 그런 다음 바로 가기 키를 사용하여 원하는 만큼 매크로를 시작할 수 있습니다. - 유지하려는 디렉토리가 있는 줄을 제거하는 것을 잊지 마십시오.
- 저장한 다음...
- 하다
J:\> .\DirsToRemove.bat
비슷한 일을 몇 번 해본 경우, 당면한 작업을 완료하는 데 보통 1~2분 정도 걸립니다.