如何搜索文件夹名称和删除子文件夹,但不搜索文件夹

时间:2012-10-03 13:20:54

标签: batch-file search cmd directory delete-file

我需要一个批处理文件,提示用户输入文件路径,以及文件夹名称中的前3个字母。然后批处理使用这3个字母删除文件夹中的所有文件夹和文件,但保留文件夹以3个字母开头。我有一个删除文件夹和子文件夹中所有文件的批处理文件,但我还需要它来删除子文件夹。这是我删除所有文件的代码:

@echo off
set /p filepath=Path to Main Directory: 
set /p string=First Letters of Sub-Folders to be Cleansed: 
FOR /D %%G in ("%filepath%\%string%*") DO del "%%G\*.*" /q /s
echo Done
pause

然后我尝试了很多不同的方法来删除%%G的子文件夹。到目前为止,我在%%G的子文件夹命名为

@echo off
set /p filepath=Path to Main Directory: 
set /p string=First Letters of Sub-Folders to be Cleansed:
FOR /D %%G in ("%filepath%\%string%*") DO for /r /d %%i in (%%G\*) do del "%%G\*.*" /q && echo %%i
echo Done
pause

但是当我尝试在最后添加&& rd /s /q %%i时,它表示找不到文件和路径。

1 个答案:

答案 0 :(得分:1)

无需递归查找“exp1”文件夹中的文件夹。您只需使用FOR / D列出子文件夹,然后使用RD / Q / S删除以每个子项为根的整个文件夹层次结构。此外,由于无论如何都要删除所有子文件夹,因此无需进行递归文件删除。

@echo off
set /p filepath=Path to Main Directory:
set /p string=First Letters of Sub-Folders to be Cleansed:
for /d %%G in ("%filepath%\%string%*") do (
  del "%%G\*" /q
  for /d %%F in ("%%G\*") do rd /s /q "%%F"
)
echo Done
pause