2

我需要一个批处理文件,提示用户输入文件路径以及文件夹名称中的前 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在最后添加时,它说找不到文件和路径。

4

1 回答 1

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
于 2012-10-03T15:40:59.963 回答