【发布时间】:2020-02-18 05:44:27
【问题描述】:
我的目标是删除 Z: 驱动器的所有文件夹和子文件夹中名为 Open Notebook.onetoc2 的文件,但不要从那些包含 *.one 文件的文件夹中删除该文件(实际OneNote 文件)。
我已经在网上搜索了这方面的解决方案,但没有找到,也不知道如何自己构建一个这样的命令。
我已经走到这一步了:
for /F "delims=" %a in ('dir /b /s "Open Notebook.onetoc2"') do @if exist %~da%~pa*.one echo del: "%~da%~paOpen Notebook.onetoc2"
似乎完成了 99%,但仍坚持这种情况,“如果存在 *.one”也将 .onetoc2 文件包含在“搜索”中,这是不需要的。我只希望“搜索”找到 .one 文件,而不是其中的 .onetoc2,因为如果该目录中存在 .one 文件,则跳过删除 .onetoc2 文件很重要。
提前非常感谢! :)
【问题讨论】:
-
为什么不更具体地说明您想要搜索的内容或以某种方式匹配它?
do if "%~xa"==".one" ...这个问题还是有点不清楚,因为你首先说你想删除一个名为Open Notebook.onetoc2的文件,然后你说你不想,只想删除.one文件。 -
如果我正确理解您的问题,也许这就是您想要的:
For /F "Delims=" %A In ('Dir /B/S/A-D-S-L "Z:\Open Notebook.onetoc2" 2^>NUL')Do @If Not Exist "%~dpA*.one" Del /A/F "%A" -
@Compo - 你明白了!这非常有效! :)) 谢谢!
-
@GerhardBarnard - 也感谢您指出看待事物的方式。
标签: batch-file command-line directory delete-file del