批处理文件删除文件夹中的文件

我在包含各种文件的目录中有很多文件夹。每个文件名以XXX_开头,其中XXX可以是文件所在文件夹的名称。我需要做的是通过所有这些文件夹并删除任何文件,其中XXX是文件所在文件夹的名称。批处理文件删除文件夹中的文件

回答:

请注意这个问题:Iterating through folders and files in batch file?

我认为这应该对你有帮助。

如果您需要进一步的帮助,请让我知道。

EDIT#1

在DOS命令行百搭字符是*。然后,在搜索某个文件的目录时,可以考虑您的正则表达式,即您的XXX_,并用*完成它,这将只返回您要查找的文件。

这意味着,而不是给出的链接问题FOR循环的一个*.zip模式,你的第一个FOR循环应该包含你的目录名,然后拿这个变量与*字符连接起来以获得只有你要找的文件对于。

例如,考虑尝试以下操作:

dir /s XXX_*.* 

这应该只返回您所感兴趣的文件,只要有正确的文件夹名称。

编辑#2

谢谢具有一种高精度你的关心。

这是一个代码示例,我希望如此,应该有所帮助。现在我知道你说你的循环是正确的,所以也许只需要这部分代码。

@echo off 

setlocal enableextensions enabledelayedexpansion

for /F "delims==" %%d in ('dir /ogne /ad /b /s .') do (

for /F "delims==" %%f in ('dir /b "%%d\%%~nd_*.*"') do (

echo %%d\%%f

)

)

endlocal

这工作,并列出包含在从电流(.)子文件夹中的文件。

我已经从以下文件夹测试它:

C:\ DOCUME〜1 \ marw1 \ MyDocu〜1 \ MyMusi〜1

凡 'XXX' 的文件夹被包含。这 'XXX' 文件夹中包含下列文件:

  1. XXX_blah.bmp复印件;
  2. XXX_blah.bmp;
  3. XXX_1234.ppt;
  4. XXX_textfile.txt。

从该结构中,输出为:

C:\ DOCUME〜1 \ marw1 \ MyDocu〜1 \ MyMusi〜1 \ XXX \ XXX_blah.bmp C:\ DOCUME〜 1个\ marw1 \ MyDocu〜1 \ MyMusi〜1 \ XXX \ XXX_1234.ppt C:\ DOCUME〜1 \ marw1 \ MyDocu〜1 \ MyMusi〜1 \ XXX \ XXX_textfile.txt

我然后怀疑把一个del指令而不是一个echo命令应该做的伎俩。这意味着要将文件夹名称本身与其路径隔离开来,您需要使用~n指令以及文件夹变量名称%%~nd,其中您的迭代文件夹变量名称为%%d

此外,甚至可以在过程中使用参数化的批处理文件,而不是硬编码,也就是说,如果'set YourFolder =...'是生产代码的一部分。这可能是这样的:

@echo off 

setlocal...

set root = %1

set root = %root:~1%

set root = %root:~0,-1%

...

endlocal

而不必'.'在我的第一个FOR循环合照,你会为了考虑您的命令行参数,而不是硬编码的文件路径与"%root%"更换的。

我的确帮助了!

回答:

正如Ron所说,因为问题被标记为“windows”。

编辑:

Ron的答案,这似乎已经消失了!是使用del /s

EDIT2:

OK,它仅适用于文件名,而不是为目录。对于目录你必须使用下面的草图。

附加信息:当你想要做同样的事情递归到目录中的文件树,(不像del)没有命令已经做横移适合你,你可以使用for命令的/R选项。

要查看for命令的文档,请执行如下操作: start "for-help" cmd /k for /?

干杯&心连心,

- 阿尔夫

回答:

cd C:\"foldername" 

del /s XXX_"*"

cls

exit

以上是 批处理文件删除文件夹中的文件 的全部内容, 来源链接: utcz.com/qa/262200.html

回到顶部