我需要一个批处理文件来在每个可移动设备中创建一个文件夹“测试”,然后我插入我的电脑(U盘等),我正在尝试这样的事情
set "extDrive="
for /f %%D in ('wmic volume get driveLetter^ where drivertype=2 ) do set extDrive=%%D
mkdir "%extDrive%\test"
有人能告诉我为什么这不起作用?
答案1
为什么这不起作用?
'wmic 卷获取驱动器号^ 其中 drivertype=2
上述命令中存在多处错误wmic
:
drivertype
应该drivetype
。- 缺少尾随的
'
。 - 不需要 `^。
- 应该
where
在 之前get
。 - 并非所有磁盘卷都有驱动器号(但逻辑磁盘有)。
使用以下批处理文件:
@echo off
setlocal
for /f "skip=1 tokens=1,2" %%d in ('wmic logicaldisk get caption^, drivetype') do (
if [%%e]==[2] echo mkdir %%d\test
)
endlocal
笔记:
- 测试批处理文件后,删除
echo
之前的内容。mkdir
- 您可能还需要对驱动器类型 3 进行一些操作。
我有一个类型 3 的可移动驱动器。在下面的输出中,C:是一个固定硬盘,D:是我的 CD ROM 驱动器,E:是一个可移动 USB 记忆棒,F:是一个可移动外部 USB 驱动器。
F:\test>wmic logicaldisk get deviceid, drivetype DeviceID DriveType C: 3 D: 5 E: 2 F: 3
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
- 西米克- Windows 管理规范命令。
答案2
要获取可移动驱动器的驱动器号,请使用:
wmic logicaldisk where drivetype=2 get deviceid
在我的情况下,这将返回:
C:\Windows\system32>wmic logicaldisk where drivetype=2 get deviceid
DeviceID
E:
我会把它放到一个 txt 文件中,然后循环遍历该文本文件...我不是一个大批量程序员,这种方式对我来说更容易调试。:)