【问题标题】:Windows bat file - deletion from directoryWindows bat 文件 - 从目录中删除
【发布时间】:2010-11-03 09:15:08
【问题描述】:
您能帮我解决以下问题吗?
很多时候,我必须执行相同的任务,即从一个目录中删除几乎所有文件——除其中 2 个之外的所有文件(比如说 1st.file 和 2nd.file)。
我找到了多种解决方案,如何从目录中删除所有内容,但不知道如何解决这个问题。
您能指出在哪里可以找到解决方案吗?
【问题讨论】:
标签:
file
batch-file
delete-file
【解决方案1】:
将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
【解决方案2】:
这样的事情可能会让你开始。
@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=
【解决方案3】:
这有点骇人听闻,但您可以只更改您不想删除的文件的属性...然后在您调用擦除时排除所有具有该属性的文件。
如下调用:
TestDelete.Bat "c:\DeleteAllFilesExcept", LeaveFile1.txt, LeaveFile2.txt
ATTRIB +H %2
ATTRIB +H %3
erase %1 /A-H
ATTRIB -H %2
ATTRIB -H %3
当然,如果您打算从目录中删除隐藏文件,这将不起作用。