批处理中如何删除指定文件以外的文件

2024-11-13 04:10:34
推荐回答(4个)
回答1:

@echo off
setlocal enabledelayedexpansion
set fn1=4.txt
set fn2=6.txt
set fn3=10.txt
::设置要保留文件的文件名。自己修改一下文件名,并增减文件名数量。
::必需以这样的格式:set fn数字=文件名。记得数字是依次递增的(1,2,3,4,5,6...)。
:lp
set/a num+=1
if defined fn%num% goto lp
set/a num-=1
color a&echo 正在清理中...
set "curph=%cd%"
cd..
set "parph=%cd%"
call set "fdn=%%curph:%parph%=%%"
if "%fdn:~,1%"=="\" set "fdn=%fdn:~1%"
set "_f=%fdn%"
set fdv=_f
call :entrysub
:end
echo 清理完成!&pause
exit

:entrysub
call cd %%!fdv!%%
set/a m=0
for /f "delims=" %%i in ('dir /ad /b') do (
set /a m+=1
set "_!m!!fdv!=%%i"
)
if not "!fdv!"=="_f" (for /f "delims=" %%i in ('dir /a-d /b 2^>nul') do call :delfile "%%i") else (
for /f "delims=" %%i in ('dir /a-d /b 2^>nul') do if /i "%%i" neq "%~nx0" call :delfile "%%i")
if defined _1!fdv! (
set fdv=_1!fdv!
goto entrysub
) else call :returnparent
goto :eof
:returnparent
cd..
call rd "%%!fdv!%%" 2>nul
for /f "tokens=1* delims=_" %%a in ("!fdv!") do set/a pn=%%a+1&set fdv=_%%b
if "!fdv!"=="_" goto end
if defined _!pn!!fdv! (
set fdv=_!pn!!fdv!
call :entrysub
) else goto returnparent
goto :eof
:delfile
for /l %%i in (1,1,%num%) do if /i "!fn%%i!"==%1 goto undel
del %1 /f
:undel
goto :eof

说明:
保存为bat文件,放到“一个目录中”。就可以删除指定文件外的所有文件包括文件夹。
指定文件的设定,看bat代码的第6,7行说明。

回答2:

把这批处理取名xx.bat,把你那些要保留的文件写到a.txt中一行一个并把a.txt和xx.bat也写进去,两文件放在你那个总目录中:

@echo off&setlocal
for /f "delims=" %%i in (a.txt) do set "%%i=y"
for /f "delims=" %%a in ('dir/s/b/a-d') do (if not defined %%~nxa del "%%a" )
copy nul temp1
for /f "delims=" %%b in ('dir/s/ad/b') do (
echo %%b > temp2
type temp1 >> temp2
del temp1& ren temp2 temp1 )
for /f "delims=" %%c in ( tem1 ) do ( rd /q "%%c" 2>nul)
del tem1
pause

回答3:

@echo off
echo 4.txt >>tmp.txt
echo 6.txt >>tmp.txt
::上面的可以删除,自己建TXT文本及内容
attrib /s /d -H
for /f "delims=" %%2 in (tmp.txt) do (
if exist "%cd%\b\c\%%2" attrib /s /d +h "%cd%\b\c\%%2")
DEL /A-H /S /Q %CD%\b
rd /s /q %CD%\b\d
attrib /s /d -H
goto :eof
----------------------------------------------------------------------
放在a文件夹下,保留内容多时可以这样 需要保留的文件写入文本文档
需要保留的文件不多最好还是用移动重建文件夹命令比较好
@echo off
move "%cd%\b\c\4.txt" %cd%
move "%cd%\b\c\6.txt" %cd%
rd /s/q "%cd%\b" & md "%cd%\b\c"
move 4.txt "%cd%\b\c\"
move 6.txt "%cd%\b\c\"
pause
goto :eof

回答4:

一般的操作是将不删除的文件移动到其他的文件夹 等这里删除完了然后在移动回来