标题: [文件操作] 批处理如何排除多个文件后删除其他所有文件? [打印本页]
作者: wgf4242 时间: 2011-1-27 14:22 标题: 批处理如何排除多个文件后删除其他所有文件?
比如有个列表a,b,c,d
这4个文件或文件夹排除。删除其他全部文件或文件夹。
作者: liion631818 时间: 2011-1-27 15:19
- @echo off
- REM 1、所有以a、b、c、d命名的文件或者目录被删除
- REM 2、子目录和子目录下的文件全被删除
- REM 3、文件名或者目录名包含特殊字符不能处理
- setlocal enabledelayedexpansion
- set other=abcd
- for /f "delims=" %%i in ('dir /a /b') do (
- if not "%%i"=="%~nx0" (
-
- set "name=%%~ni"
- echo !other! | findstr "!name!" 1>nul 2>nul|| (
- echo del %%i
- del /q "%%i" 1>nul 2>nul
- rd /s /q "%%i" 1>nul 2>nul
- )
- )
- )
- pause
复制代码
作者: liion631818 时间: 2011-1-27 15:20
最好把不被删除的文件和目录列在文件中在处理,不然仅仅是abcd,这样的代码也没实际用途
[ 本帖最后由 liion631818 于 2011-1-27 15:24 编辑 ]
作者: hanyeguxing 时间: 2011-1-27 15:50
以文件夹为例,不含隐藏属性:- @echo off
- set ""Program Files"=="
- set ""Documents and Settings"=="
- set ""WINDOWS"=="
- c:
- for /d %%a in (*) do if not defined "%%a" rd /s /q "%%a"
复制代码
作者: yhcbird 时间: 2011-1-27 16:57
假设你不删除a b c d 4个文件夹和其中的文件。则可以把a b c d逐行写到2.txt中去,把2放到d盘不可删除txt文件夹里面。这是你不删除的文件夹,然后假设bat文件和要处理的文件夹的路径在桌面(这些你可以自己设一下)。然后这样就可以了。- set "x=%userprofile%\桌面"
- dir /ad /b "%x%">>1.txt
- copy "d:\不可删除txt\2.txt" "%x%"
- findstr /v /x /r /g:2.txt 1.txt >3.txt
- for /f "usebackq delims=" %%i in ("3.txt") do (
- rd /s /q "%x%\%%i"
- )
- del *.txt
复制代码
[ 本帖最后由 yhcbird 于 2011-1-27 17:16 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |