【问题标题】: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
    

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

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多