@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
set flag=
for /f "delims=" %%j in (test.txt) do if /i "%%i"=="%%j" set flag=1
if not defined flag echo "e:\%%i"
)
pause
test.txt必须放在E盘之外的分区,里面的内容为不带路径的文件夹名,一行一条记录,比如:
文件夹1
文件夹2
文件夹3
文件夹4
如果对以上演示代码的效果很满意,可以用下面的代码来删除E盘下指定文件夹外的其他所有文件或文件夹:
@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
set flag=
for /f "delims=" %%j in (test.txt) do if /i "%%i"=="%%j" set flag=1
if not defined flag del /a /f "e:\%%i" 2>nul||rd /s "e:\%%i" 2>nul
)
pause
::------------winxp sp2 disk clear--------------
::::::::::::::::::::注要配置::::::::::::::::::::
::你需要清理的分区是几个=3
::都是那几个分区=D:\;E:\;F:\
::----------------------------------------------
@echo off
:dc
cls
title=winxp sp2 disk clear
SETLOCAL ENABLEDELAYEDEXPANSION
SET list=C:\%random%.dat
if /i "%1" == "list" cls&goto parlist
for /f "tokens=2 delims==" %%i in ('findstr /B "::你需要清理的分区是几个" %0') do SET show=%%i
for /f "tokens=2,3,4,5,6 delims==;" %%i in ('findstr /B "::都是那几个分区" %0') do SET par1=%%i&SET par2=%%j&SET par3=%%k&SET par4=%%l&SET par5=%%m&SET par6=%%n
SET par|find "par%show%"&&goto list
echo config error...
pause>nul
goto dcend
:list
echo.>%list%
for /f "tokens=2 delims=>" %%i in ('findstr /B "::>" %0') do echo %%i>>%list%
goto partition
:parlist
set /p disk=请输入你需要建立列表的分区盘符(例:"C:" 不包括"\")
ECHO %disk%|findstr /b /e /i "C: D: E: F: G: H: I: J: K: L: M: N:"||CLS&&ECHO 输入错误! &&goto parlist
echo.>%list%
for /f "delims=" %%i in ('dir /a:d /b %disk%\') do ECHO ::^>%disk%\%%i>>%list%
cls
set /p ch=%disk%根目录列表已完成,需要添加至本脚本内吗?(Y/N):
if /i "%ch%" == "y" copy %0+"%list%" %0
notepad.exe %list%&goto dcend
:partition
SET par=!par%show%!
SET /A show=%show%-1
for /f "delims=" %%i in ('dir /A:D /B %par%') do findstr /B /E /C:"%par%\%%i" %list% >nul || rd /s /q "%par%%%i"
del /f /q /a %par%*.*
if %show%==0 goto dcend
goto partition