我有一个批处理脚本来执行删除多个扩展名的命令。例如:
set /p drive=Choose the letter of usb:
if %drive%== E goto E
示例(如果您选择 E)
E:
del /f /q E:\*.lnk *.inf *.init
但只删除第一个 (*.lnk)。其余重定向到驱动器 c(我执行批处理的位置)示例:
Can't find C:\*.inf
我不想这样做:
del /f /q E:\*.lnk
del /f /q E:\*.inf
del /f /q E:\*.init
如何修复?谢谢
答案1
您可以像第一个扩展一样,通过为其他扩展添加前缀来相当快地解决这个问题:
del /f /q E:\*.lnk E:\*.inf E:\*.init
但实际上,您可以在此处使用变量来为您完成工作,而不必手动为每个驱动器创建一个块:
set /p drive=Choose the letter of usb:
del /f /q %drive%:\*.lnk %drive%:\*.inf %drive%:\*.init
答案2
Taz,我将借用你的答案来展示完整的例子。
:TOP
set /p drive=Choose the letter of usb:
If "%drive%" EQU "" Goto :TOP
Set drive=%drive:~0,1%
del /f/q/s/a %drive%:\*.lnk %drive%:\*.inf %drive%:\*.init
仅接受输入的第一个字符并且检查是否没有输入。
将从给定路径开始/s
检查所有子文件夹中的文件。将/a
删除所有文件,即使它们是隐藏的。不过对于只读文件不是 100% 确定...
参数周围不使用引号"
,因为用户提供的唯一数据是一个字母,并且预先写好的参数内没有空格。