批处理脚本:搜索并删除指定文件名

4

我会详细解释我的情况。我需要一个批处理文件,在C:/中搜索'Minecraft.exe',如果存在则删除它。

我不懂足够的批处理知识来自己完成这个任务,我已经到处查找,但只能找到部分解决方案。


这是只针对你自己的东西,还是你计划与他人分享?Minecraft有一个默认的安装目录,你可以直接指向它,而不必搜索。我觉得我不想让这个批处理文件在我的电脑上运行,因为它也会删除我想要替换旧版本的新版Minecraft!或者这只是Minecraft的“卸载程序”? - Gray
实际上,它将通过PDQDeploy在网络上部署,以从一堆不应该拥有Minecraft的计算机中删除它。我需要每个副本都消失。 - Marcus Jones
啊,好吧...我猜这是一个教育环境。人们仍然可以重命名minecraft.exe或从USB驱动器启动它。虽然我不知道有更好的方法来阻止这个,但我认为这里有很多弱点。也许禁止登录服务器的IP地址...我不确定那是否完全能够阻止它。我认为如果人们知道你试图阻止这个程序执行,他们会有更好的解决方案。 - Gray
3个回答

4

好的 - 首先执行此操作是个好主意:

DIR /s c:\minecraft.exe

但这只是在寻找它。

对于这个命令要非常小心 - 如果出现错误,可能会带来真正的麻烦。

del /p /s c:\minecraft.exe

将删除所有minecraft.exe文件(但会先提示)。

省略/p,将不提示直接删除。

添加/f,将同时删除任何找到的只读版本。

只要小心点,好吗?


0

尝试这个(在删除echo之前它不会删除任何东西):

@echo off &setlocal 
for /f "delims=" %%i in ('dir /a-d /s /b c:\minecraft.exe') do echo del "%%~i"
endlocal

问题在于Minecraft.exe也可能位于C:/的任何子目录中。因此,我实际上需要搜索包括子目录在内的整个C:/驱动器。 - Marcus Jones
是的,这个命令执行 dir /s,它会在 C:\ 的所有文件夹中搜索。 - Endoro
哦,有趣。所以在批处理中,您不需要在目录之间使用任何通配符吗?例如 C:/%/Minecraft.exe。 - Marcus Jones
如果已知完整名称(minecraft.exe),则无需使用通配符。 - Endoro
它递归地查找所有同名文件。 - Pat. ANDRIA

0

这可能太晚了,但是:

For /F "tokens=*" %%I in ('Dir c:\Minecraft.exe /s /b') do set FOUND="%%~fI"
del %FOUND%

第一行搜索整个 C: 驱动器。第二行删除文件。

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