标题: [文件操作] 求助:删除除指定文件夹外的所有文件夹及文件 [打印本页]
作者: chineselzh 时间: 2008-8-30 20:44 标题: 求助:删除除指定文件夹外的所有文件夹及文件
比如我D盘有两个文件夹:a和b
我想在开机的时候删除D盘除文件夹a和b外的其它所有文件和文件夹,能不能用批处理完成?呵呵。。。
为谢!
作者: pusofalse 时间: 2008-8-30 21:15
- @echo off
- for /d %%i in (d:\*) do if /i "%%~ni" neq "a" if /i "%%~ni" neq "b" rd /s /q "%%i"
- pause
复制代码
作者: SmallK 时间: 2008-8-30 23:42
pusofalse就是强啊!人又好!有问必答!呵呵……
作者: jmz573515 时间: 2008-9-1 10:15 标题: 快速清理桌面
我发一个和楼主的意思差不多,写的代码可能有点臃肿望高人优化- @echo off
- setlocal enabledelayedexpansion
- if "%cd%" neq "%userprofile%\桌面" echo 请把该文件放到桌面上使用!&pause>nul&exit
- for /f "delims=:" %%a in ('findstr /n /c:"[文件夹设置]" %0') do set fdk=%%a
- for /f "delims=:" %%a in ('findstr /n /c:"[文件设置]" %0') do set flk=%%a
- for /f "delims=" %%i in ('dir /ad /b *.*') do (
- call :fd "%%i"
- )
- for /f "delims=" %%j in ('dir /a-d /b *.*') do (
- call :file "%%j"
- )
- pause
- ::判断文件夹部分
- :fd
- for /f "skip=%fdk% delims=" %%m in (%~sdpnx0) do (
- if %1 equ "%%m" goto :eof
- set a=%%m
- if "!a:~0,3!"=="***" echo rd /s /q %1&goto :eof
- )
- echo rd /s /q %1
- goto :eof
- ::判断文件部分
- :file
- for /f "skip=%flk% delims=" %%n in (%~sdpnx0) do (
- if %1 equ "%%n" goto :eof
- )
- if %1 neq "%~nx0" echo del /f /q %1
- goto :eof
- *******************************************************************************
- [文件夹设置](请在下面输入你要保留的“文件夹”每行只能输入一个)
- 新建文件夹
- 小游戏
-
-
-
-
- *******************************************************************************
- [文件设置](请在下面输入你要保留的“文件”每行只能输入一个)
- a.txt
- uc.lnk
- a.vbs
- a.bat
- 一键上网.bat
- 腾讯QQ.lnk
- MvBox.lnk
- 132.wma
- 快速关机.bat
- HTML语言教程.exe
复制代码
作者: jellyhk 时间: 2008-9-1 13:07
我技术不行。
不过你可以自己发散思维啊!!!
你可以把a和b copy到其他地方再删除d盘中的全部文件夹在copy回来也一样,,,,
----------------------------呵呵------------------------思路而已--------------------------------------
作者: Batcher 时间: 2008-9-1 13:14 标题: 回复 5楼 的帖子
如果a和b太大的话,可能会有问题。
作者: jxfa0086768 时间: 2008-9-1 19:15
这种问题好像很多人问。应该是用来搞QQ登陆后生成的那些文件夹吧。
作者: jellyhk 时间: 2008-9-2 00:46 标题: 回复6楼
哦!
那是我没想到大的,你想的真全面啊!!
我有2个思路不知道行不。
1:用有个命令我忘了是怎么写的了------------命令的作用是不让任何人访问好像是cal??
这样他就不能删除了吧。
2:在a和b下建立个..\文件夹呵呵,这样也删除不了。删除到a b的时候就能跳过了。。
对吧!!!!
作者: chineselzh 时间: 2008-9-2 01:19
谢谢各位达人!呵呵
作者: Batcher 时间: 2008-9-2 09:40 标题: 回复 8楼 的帖子
1、设置读写权限,可以用cacls命令,但只能适用于NTFS分区,遇到FAT32分区就不行了。
2、在子目录下面建立以点结尾的文件夹是没用的,你试试2楼的rd /s /q,一样能删除。
作者: chineselzh 时间: 2008-9-2 09:52
请问二楼代码
for /d %%i in (d:\*) do if /i "%%~ni" neq "a" if /i "%%~ni" neq "b" rd /s /q "%%i"
里的"%%~ni"一句里 ~ 和n分别代表什么呀?
四楼里(%~sdpnx0)一句每个字符又分别代表什么呀?谢谢!
作者: Batcher 时间: 2008-9-2 11:13 标题: 回复 11楼 的帖子
尽快学会看帮助
for /?
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
The modifiers can be combined to get compound results:
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
environment variable for %I and expands to the
drive letter and path of the first one found.
%~ftzaI - expands %I to a DIR like output line
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |