求一个批处理命令(删除目录下面全部文件和文件夹,指定的文件除外)

删除目录下面全部文件和文件夹,指定的文件除外。

例如:删除D:abc\ 目录下除130.txt和132.doc外的全部文件和目录的批处理!

本人写的代码如下:
cd /d D:\abc\def
for /f "usebackq delims=" %%i in (`dir /a /b`) do (attrib "%%i" -r -h -s)
del D:\abc\def\*.* /f /q
rem
for /R %%I in (130.txt,132.doc) do attrib "%%~nI" +r +s +h
for /R %%i in (*.*) do (rmdir "%%i" /s /q)
for /f "usebackq delims=" %%i in (`dir /a /b`) do (attrib "%%i" -r -h -s)
这个是保留130和132目录,而不是名字,帽子for参数本身的限制,求高手帮忙写一个新的批处理或者修改一下,本人从12点一直弄到现在,真的搞不定了,求高手帮忙,确实没有财富值了,见谅。

@echo off
for /r "d:\abc\def" %%a in (*) do (
   if "%%~nxa" neq "130.txt" (
      if "%%~nxa" neq "132.doc" (
         del /a /f "%%a"
      )
   )
)
for /f "usebackq delims=" %%b in ('dir /ad /b /s "d:\abc\def"^|sort /r') do (
   rd "%%b"
)
pause

上面批处理的思路是:

先删除除了130.txt和132.doc外所有的文件,然后在删除所有的空目录。

有疑问,请追问。如果对你有帮助,请采纳!谢谢!

追问

执行了,没任何效果,也没删除任何文件。

追答@echo off
for /r "d:\abc\def" %%a in (*) do (
   if "%%~nxa" neq "130.txt" (
      if "%%~nxa" neq "132.doc" (
         del /a /f "%%a"
      )
   )
)
for /f "delims=" %%b in ('dir /ad /b /s "d:\abc\def"^|sort /r') do (
   rd "%%b"
)
pause

系统下测试成功。

有疑问,请追问

温馨提示:答案为网友推荐,仅供参考
相似回答