如何使用批处理脚本删除特定位置中与名称匹配的任何文件夹?

问题描述 投票:0回答:1

我有以下目录:

C:\Users\blabla
。在它的树中有多个
toDelete
目录,例如:

C:\Users\blabla\toDelete
C:\Users\blabla\x1\toDelete
C:\Users\blabla\x2\toDelete

我想删除所有这些目录,不管它们的内容如何。

我试过跑步:

@echo off
DEL /Q /F "C:\Users\blabla\**\toDelete" 

但是当我在 cmd.exe 中运行此脚本时,出现以下错误:

The filename, directory name, or volume label syntax is incorrect

我也试过跑步:

@echo off
set folder_name=toDelete
set folder_path=C:\Users\blabla

for /d %%i in ("%folder_path%\*") do (
    if /i "%%~nxi"=="%folder_name%" (
        DEL /s /q "%%i"
    )
)

但是报错:

'   ' is not recognized as an internal or external command,
operable program or batch file.
'       ' is not recognized as an internal or external command,
operable program or batch file.
'   ' is not recognized as an internal or external command,
operable program or batch file.
'   ' is not recognized as an internal or external command,
operable program or batch file.
'       ' is not recognized as an internal command,
operable program or batch file.

DEL
更改为
RD
。跑步:

@echo off
RD /Q "C:\Users\blabla\**\toDelete" 

我得到了这个错误:

The system cannot find the path specified.

所以我猜这里的 glob 模式是个问题。

DEL
更改为
RD
。跑步:

@echo off
set folder_name="toDelete"
set folder_path="C:\Users\blabla"

for /d %%i in ("%folder_path%\*") do (
    if /i "%%~nxi"=="%folder_name%" (
        RD /s /q "%%i"
    )
)

我得到空输出,(我想成功完成),但目录没有被删除。

windows batch-file cmd delete-file
1个回答
0
投票

我有一个尝试,基于

forfiles
。它不起作用,但可能需要稍作修正。

供您参考:我和你做过同样的事情,但我是在一个

C:\Temp_Folder
目录中做的:

目录在哪里?

C:\Temp_Folder>FORFILES /S /M "ToDelete" /C "cmd /c if @isdir==TRUE echo @path"

"C:\Temp_Folder\ToDelete"
"C:\Temp_Folder\x1\ToDelete"
"C:\Temp_Folder\x2\ToDelete"

删除它们:

C:\Temp_Folder>FORFILES /S /M "ToDelete" /C "cmd /c if @isdir==TRUE RD /Q @path"

ERROR: The system cannot find the file specified.
ERROR: The system cannot find the file specified.
ERROR: The system cannot find the file specified.
© www.soinside.com 2019 - 2024. All rights reserved.