当前位置:  开发笔记 > 编程语言 > 正文

除了DOS中的某些文件外,如何删除所有文件/子目录?

如何解决《除了DOS中的某些文件外,如何删除所有文件/子目录?》经验,为你挑选了1个好方法。

我正在寻找一个DOS脚本来删除根目录中的所有文件和子目录,除了根目录中的一组批处理文件(*.bat).任何DOS都会在那里知道一个简单的方法吗?

更新

谢谢大家的帮助.这就是我现在所处的位置(见下文).我正在使用Ken的建议来删除文件.我想知道我怎样才能制止这种脚本运行,如果del还是RD命令失败,由于在文件/目录的锁.谁知道怎么样?现在,这个脚本将在删除后执行一些操作,如果任何删除失败,我想停止脚本.

@echo off

REM *********************************************************************
REM *  Delete all files and subdirs except for batch files in the root  *
REM *********************************************************************

REM Delete all files in current dir except bat files.  Does this by a) setting the attributes of *.bat files to 
REM readonly and hidden, b) deleting the rest, c) reseting the attributes 

attrib +r +s *.bat
del *.* /S /Q
attrib -r -s *.bat

REM Deletes ALL subdirectories 

FOR /D  %%G in (*) DO RD /s /q %%G

Ken White.. 21

您可以先将要保留的文件的属性设置为只读和隐藏,然后删除其余文件,然后重置隐藏的只读文件的属性.

attrib +r +s *.bat
del *.*
attrib -r -s *.bat

我曾经经常这样做,并写了一个自动化的批处理文件:

@echo off
@ if "%1" == "%9" goto help
@ if /i %1 EQU ? goto help
@ if /i %1 EQU help goto help
@ attrib +h +s %1
@ %2 %3 /Q
@ attrib -h -s %1
@ goto :EOF
:help
@echo        ?????????????????????????????????????????????????????????
@echo        ? except filespec1 doscommand filespec2                 ?
@echo        ?                                                       ?
@echo        ?  filespec1  The files to exclude from doscommand      ?
@echo        ?  doscommmand The DOS command to execute on filespec2  ?
@echo        ?  filespec2  The files to execute doscommand against   ?
@echo        ?                                                       ?
@echo        ? Example:                                              ?
@echo        ?                                                       ?
@echo        ? except *.txt del *.*                                  ?
@echo        ?                                                       ?
@echo        ?Deletes all files except text files in the directory   ?
@echo        ?????????????????????????????????????????????????????????

可能只是使用隐藏属性,但我知道del不会触及隐藏的系统文件,所以我设置了两个.IMO,比抱歉更安全.

基于Marcus的评论:如果您想将此扩展为包含当前目录的子目录,只需将两个attrib行更改为

attrib   /S

并将两条属性线之间的线更改为

@ %2 %3 /Q /S

除了.bat之外,这应该适用于你想要的大多数事情.



1> Ken White..:

您可以先将要保留的文件的属性设置为只读和隐藏,然后删除其余文件,然后重置隐藏的只读文件的属性.

attrib +r +s *.bat
del *.*
attrib -r -s *.bat

我曾经经常这样做,并写了一个自动化的批处理文件:

@echo off
@ if "%1" == "%9" goto help
@ if /i %1 EQU ? goto help
@ if /i %1 EQU help goto help
@ attrib +h +s %1
@ %2 %3 /Q
@ attrib -h -s %1
@ goto :EOF
:help
@echo        ?????????????????????????????????????????????????????????
@echo        ? except filespec1 doscommand filespec2                 ?
@echo        ?                                                       ?
@echo        ?  filespec1  The files to exclude from doscommand      ?
@echo        ?  doscommmand The DOS command to execute on filespec2  ?
@echo        ?  filespec2  The files to execute doscommand against   ?
@echo        ?                                                       ?
@echo        ? Example:                                              ?
@echo        ?                                                       ?
@echo        ? except *.txt del *.*                                  ?
@echo        ?                                                       ?
@echo        ?Deletes all files except text files in the directory   ?
@echo        ?????????????????????????????????????????????????????????

可能只是使用隐藏属性,但我知道del不会触及隐藏的系统文件,所以我设置了两个.IMO,比抱歉更安全.

基于Marcus的评论:如果您想将此扩展为包含当前目录的子目录,只需将两个attrib行更改为

attrib   /S

并将两条属性线之间的线更改为

@ %2 %3 /Q /S

除了.bat之外,这应该适用于你想要的大多数事情.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有