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

[文件操作] 批处理删除目录下所有内容时如何排除指定文件夹?

我这写了一段批处理用于删除多余的主题,但是需要保留XP的默认主题Luna。
也就是需要删除themes目录下的所有文件及目录。但是Luna.theme和Luna文件夹及Luna文件夹下的所有文件夹与文件需要排除
请帮忙改一下

for /f "tokens=*" %%i in ('dir /s /b %systemroot%\Resources\Themes\') do (if not "%%i"=="%systemroot%\Resources\Themes\Luna" if not "%%i"=="%systemroot%\Resources\Themes\Luna.theme" del /f /s /q "%%i"  & rd /s /q "%%i")

谢谢大家的关注

大家真热心啊。很感动。
在CSDN上问别的问题,经常石沉大海。

TOP

受三楼的提示,我自己改写了一个

cd %systemroot%\Resources\Themes\
rem 首先删除目录这样遍历文件的时候就会少一些
for /d %%a in (*) do (if not "%%a"=="Luna" rd /s /q "%%a")
rem dir /a-d /b这些参数可以只列出当前的目录下第一层文件
for /f "delims=" %%i in ('dir /a-d /b') do (if not "%%i"=="Luna.theme" del /f /q "%%i")

这有点问题,如果放入一大堆批出程序中就不好了,不能先改变当前目录。放入程序中时可以将目录全名放入循环中,

[ 本帖最后由 tr0217 于 2011-3-9 12:39 编辑 ]

TOP

这一个可以放到批处理程序中用,不迭代

<code>
for /f "delims=" %%i in ('dir /a-d /b %systemroot%\Resources\Themes\') do (if not "%%i"=="Windows Classic.theme" (if not "%%i"=="Luna.theme" del /f /q "%systemroot%\Resources\Themes\%%i"))
for /f "delims=" %%a in ('dir /b/d  "%systemroot%\Resources\Themes\"') do (if not "%%a"=="Luna" rd /s /q "%systemroot%\Resources\Themes\%%a")
</code>

可以很容易改成带参数的。
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

TOP

返回列表