我在包含各种文件的目录中有很多文件夹。每个文件名以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' 文件夹中包含下列文件:
- XXX_blah.bmp复印件;
- XXX_blah.bmp;
- XXX_1234.ppt;
- 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%"
更换的。
我的确帮助了!
不是我想要做的。我真的只需要一个脚本来删除文件,如果它包含它所在的文件夹名称的话。我可以编写其余的脚本来自己完成它。 – user290687 2010-10-12 16:41:42
如何将XXX与文件夹名匹配我有整个循环写入我只是不知道如何编写如果或从哪里xxx文件夹== xxx从开始文件名? – user290687 2010-10-12 17:47:33
这是我有,但这不起作用 – user290687 2010-10-12 19:04:57
正如Ron所说,因为问题被标记为“windows”。
编辑:
Ron的答案,这似乎已经消失了!是使用del /s
EDIT2:
OK,它仅适用于文件名,而不是为目录。对于目录你必须使用下面的草图。
附加信息:当你想要做同样的事情递归到目录中的文件树,(不像del
)没有命令已经做横移适合你,你可以使用for
命令的/R
选项。
要查看for
命令的文档,请执行如下操作: start "for-help" cmd /k for /?
。
干杯&心连心,
- 阿尔夫
我没有看到罗恩的回答,所以我不是很了解你的。 – user290687 2010-10-12 19:34:07
del/s test *此命令适用于我 – Cid 2012-01-13 06:01:54
cd C:\"foldername"
del /s XXX_"*"
cls
exit
- 1. 批处理文件删除文件夹
- 2. 删除批处理文件夹中的文件和文件夹
- 3. 批处理文件,删除文件和文件夹,除了
- 4. 批处理文件以删除文件和文件夹
- 5. 批处理脚本犯规删除文件夹,文件夹中的.txt文件:(
- 6. 批处理文件删除结果*从文件夹的子文件夹
- 7. 批处理文件删除另一个文件夹内的文件夹
- 8. 批处理文件删除特定的文件夹
- 9. 批处理文件脚本删除文件夹中重复的文件
- 10. 批处理文件。删除目录中的所有文件和文件夹
- 11. 批处理文件删除用户目录中的文件和文件夹
- 12. 使用批处理文件删除文件夹中的pdf文件
- 13. 批处理文件,删除文件夹在Windows 7
- 14. 批处理文件只能删除文件夹
- 15. 使用批处理删除文件和文件夹
- 16. 批处理删除文件夹+子文件夹中除文件类型以外的所有文件
- 17. 批处理脚本删除给定文件夹中最旧的文件夹
- 18. 删除文本文件中的批处理文件变量
- 19. 批处理文件删除多个文件夹中保存最近的X文件的每个文件夹
- 20. 批处理文件文件夹比较?
- 21. 批处理文件:两个文件夹
- 22. 批量删除批处理文件
- 23. 从当前文件夹中的所有文件和子文件夹窗口批处理文件删除前缀
- 24. 在批处理文件中的一个文件夹下删除文件和文件夹
- 25. 批处理文件:如果文件夹中有子文件夹,如何删除按日期排序的文件?
- 26. 使用批处理文件查找和删除文件夹和子文件夹中的特定文件
- 27. 批处理文件搜索文件夹并删除特定文件
- 28. 从批处理文件中的文件中删除行
- 29. 批处理删除没有自己子文件夹的所有子文件夹
- 30. 批处理文件,删除文件,还创建删除文件的日志
你的意思是,删除任何文件(S),其文件名的目录下,以'XXX_'开始? – Ruel 2010-10-12 16:31:39
是的文件的开始,直到_将等于文件夹名称。 – user290687 2010-10-12 17:18:39