批量执行 usb 盘符命令

批量执行 usb 盘符命令

我有一个批处理脚本来执行删除多个扩展名的命令。例如:

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% 确定...

参数周围不使用引号",因为用户提供的唯一数据是一个字母,并且预先写好的参数内没有空格。

相关内容