[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何排除多个文件后删除其他所有文件?

比如有个列表a,b,c,d
这4个文件或文件夹排除。删除其他全部文件或文件夹。

  1. @echo off
  2. REM 1、所有以a、b、c、d命名的文件或者目录被删除
  3. REM 2、子目录和子目录下的文件全被删除
  4. REM 3、文件名或者目录名包含特殊字符不能处理
  5. setlocal enabledelayedexpansion
  6. set other=abcd
  7. for /f "delims=" %%i in ('dir /a /b') do (
  8. if not "%%i"=="%~nx0" (
  9. set "name=%%~ni"
  10. echo !other! | findstr "!name!" 1>nul 2>nul|| (
  11. echo del %%i
  12. del /q "%%i" 1>nul 2>nul
  13. rd /s /q "%%i" 1>nul 2>nul
  14. )
  15. )
  16. )
  17. pause
复制代码
__@__@__批了___来看看吧

TOP

最好把不被删除的文件和目录列在文件中在处理,不然仅仅是abcd,这样的代码也没实际用途

[ 本帖最后由 liion631818 于 2011-1-27 15:24 编辑 ]
__@__@__批了___来看看吧

TOP

以文件夹为例,不含隐藏属性:
  1. @echo off
  2. set ""Program Files"=="
  3. set ""Documents and Settings"=="
  4. set ""WINDOWS"=="
  5. c:
  6. for /d %%a in (*) do if not defined "%%a" rd /s /q "%%a"
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

假设你不删除a b c d 4个文件夹和其中的文件。则可以把a b c d逐行写到2.txt中去,把2放到d盘不可删除txt文件夹里面。这是你不删除的文件夹,然后假设bat文件和要处理的文件夹的路径在桌面(这些你可以自己设一下)。然后这样就可以了。
  1. set "x=%userprofile%\桌面"
  2. dir /ad /b "%x%">>1.txt
  3. copy "d:\不可删除txt\2.txt" "%x%"
  4. findstr /v /x /r /g:2.txt 1.txt >3.txt
  5. for /f "usebackq delims=" %%i in ("3.txt") do (
  6.                rd /s /q "%x%\%%i"
  7. )
  8. del *.txt
复制代码

[ 本帖最后由 yhcbird 于 2011-1-27 17:16 编辑 ]
菜鸟学批,一批一大批~~~~~~

TOP

返回列表