防止 cmd.exe 删除隐藏子文件夹中的文件

防止 cmd.exe 删除隐藏子文件夹中的文件

我有以下文件结构

Parent\Deploy                 (folder)
Parent\Deploy\.svn            (hidden folder)
Parent\Deploy\.svn\file1      (regular file)
Parent\Deploy\.svn\file2      (regular file)
Parent\Deploy\.svn\file3      (regular file)
Parent\Deploy\file4           (regular file)
Parent\Deploy\file5           (regular file)
Parent\Deploy\file6           (regular file)
Parent\Deploy\Something       (regular folder)
Parent\Deploy\Something\file7 (regular file)

假设我现在在 C:\Parent,我想使用 DEL 命令删除所有文件 4、5、6、7。

这是我的尝试:

1) DEL /f /q /s .\Deploy 
2) DEL /f /q /s /A:-H .\Deploy 

但是这也会删除隐藏的 .svn 中的文件。第二个仅排除隐藏的文件,但文件 1-3 是“正常的”,因此无论如何它都会删除它们。

答案1

如何递归删除除隐藏目录中的文件之外的所有文件?

使用以下批处理文件:

@echo off
setlocal enableDelayedExpansion
rem walk file tree, 1/ finding non-hidden directories then 2/ finding files.
rem 1/ find non-hidden directories
for /f "usebackq tokens=*" %%i in (`dir /b /s /a:d-h`) do (
  rem 2/ find and delete files
  echo Processing directory: %%i
  for /f "usebackq  tokens=*" %%j in (`dir /b /a:-d %%i 2^> nul`) do (
    echo Processing file: %%i\%%j
    del /f /q "%%i\%%j"
    )
  )

进一步阅读

相关内容