Windows bat文件 - 从目录中删除

问题描述:

请问下列问题,请帮助我吗? 很多时候我必须做同样的任务,即从一个目录中删除几乎所有的文件 - 除了其中的两个文件(比如1st.file和2nd.file)之外的所有文件。 我发现多个解决方案如何从目录中删除所有内容,但不知道如何解决这个问题。 你能指出在哪里可以找到解决方案吗?Windows bat文件 - 从目录中删除

+0

我不完全理解你的问题。你能提供一些细节吗? – Dennis 2010-11-03 09:17:23

用您的文件替换DONOTDELETE.ME,该文件不会被删除。

@echo off 
for /r . %%a in (*.*) do (
    IF NOT "%%~nxa" == "DONOTDELETE.ME" (
     DEL "%%a" ) 
) 

你也可以只做到attrib -r有问题的文件然后再删除只读标志,像这样:

@echo off 
cd \myFiles 
attrib myFiles\DONOTDELETE1.ME +r 
attrib myFiles\DONOTDELETE2.ME +r 
del myFiles\*.* /q /s /a-r 
attrib myFiles\DONOTDELETE1.ME -r 
attrib myFiles\DONOTDELETE2.ME -r 
for /f %%a in ('dir myFiles/ad /b') do echo rd myFiles\%%a /q/s 
+0

谢谢,它的工作原理。 – Lormitto 2010-11-04 08:19:12

+0

谢谢,它的工作原理。 亲切的问候 – Lormitto 2010-11-04 08:19:45

+1

Consdider用答案左边的复选标记标记答案。 – 2010-11-04 08:48:41

像这样的东西可能会让你开始。

@ECHO OFF 
SET RemoveFolder=C:\Temp 

MV %RemoveFolder%\1st.file 1st.file 
MV %RemoveFolder%\2nd.file 2nd.file 
RD /S /Q %RemoveFolder% 
IF NOT EXIST %RemoveFolder% MD %RemoveFolder% 
MV 1st.File %RemoveFolder% 
MV 2nd.File %RemoveFolder% 

SET RemoveFolder= 

这是一个小的hackish,但你可以只改变的属性您不想删除的文件...然后在调用擦除时排除所有具有该属性的文件。

调用follwing这样的: TestDelete.Bat “C:\ DeleteAllFilesExcept”,LeaveFile1.txt,LeaveFile2.txt

ATTRIB +H %2 
ATTRIB +H %3 

erase %1 /A-H 

ATTRIB -H %2 
ATTRIB -H %3 

当然,如果你打算删除隐藏文件,这将不起作用从目录中。