从子文件夹中删除文件名

4
我尝试使用批处理文件来删除子目录下所有给定名称的文件。我基本上有一个包含成千上万个具有GUID名称的文件夹的文件夹,每个文件夹中都需要定期删除一个文件,我不想一直进行搜索和删除。
典型的子文件夹看起来像:
C:\folder\{000D5D3E-A54D-4B0B-8B03-95AC591CB20A}\
C:\folder\{00DBFD07-3218-4DC2-83CA-27A7D14D782C}\
C:\folder\{00A08715-0811-6142-50AE-82A332EA3A5F}\
...etc

我想删除:

C:\folder\{000D5D3E-A54D-4B0B-8B03-95AC591CB20A}\log.xml
C:\folder\{90DBFD07-3218-4DC2-83CA-27A7D14D782C}\log.xml
C:\folder\{A0A08715-0811-6142-50AE-82A332EA3A5F}\log.xml
...etc

这是我目前的情况,但是我无法让它工作。有什么建议吗?
SET _DIR_="C:\FOLDER"
SET _PATTERN_="C:\folder\{*}\log.xml"
C:
CD %_DIR_%
for /r /%f in (%_PATTERN_%) do ECHO "%f"

谢谢。请仅以批处理文件的方式回复如何执行此操作 =)
3个回答

4

安全带的爱循环:

for /d /r "C:\folder" %%i in (*) do if exist "%%~fi\log.xml" echo del "%%~fi\log.xml"

3

*首先,在测试子树上测试此命令 - 如果您的打字能力像我一样差,那么这非常危险

(抱歉大声说话 - 但你必须非常小心...

首先尝试此命令FIRST

DIR /S c:\FOLDER\log.xml

如果这样可以生成一个您想要删除的文件列表,那么:
DEL /S c:\FOLDER\log.xml

将会删除它们。


我认为问题提问者想要的是仅从具有GUID名称的文件夹模式中删除log.xml,例如c:\ FOLDER \ {32423 ...},而不仅仅是像c:\ FOLDER \ something \ log.xml这样的文件夹。 - Irfan
1
@Power-Inside - OP 表示“在子目录下的所有子目录中”,但实际上编程时却包括了所有 {..} 目录。这证明了准确性是多么重要。 - Magoo

1
for /f %%i in ('dir {*} /s /b') do cd %%i&&del log.xml

要在命令行中使用,只需将%%i替换为%i。这将从任何以“{”开头且以“}”结尾的文件夹中删除log.xml。

首先导航到正确的目录!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接