我正在尝试创建一个列出usb驱动器的批处理文件(它通常是一个连接的),然后插入驱动器或从驱动器复制内容。
我正在尝试使用wmic列出驱动器,然后我收到驱动器号。但我不知道如何使用我从wmic获得的信息执行cd命令。
wmic命令:
wmic volume where "drivetype=2" get driveletter /format:table | findstr :
答案 0 :(得分:1)
为什么不使用Powershell列出磁盘然后过滤USB驱动器并从那里开始?
Powershell脚本: https://gallery.technet.microsoft.com/DiskPartexe-Powershell-0f7a1bab
尝试其中一些命令并回复您想要做的事情和您的Powershell尝试,我们将帮助完善它。
答案 1 :(得分:0)
首先,让我们稍微修改一下wmic
命令:
wmic VOLUME WHERE (DriveLetter^>"" AND DriveType=2) GET DriveLetter /VALUE
DriveLetter>""
部分旨在删除任何没有驱动器号的卷。
要将其用于其他操作,请使用for /F
在循环中获取实际的驱动器号:
for /F "tokens=2 delims==" %%V in ('
wmic VOLUME WHERE ^(DriveLetter^^^>"" AND DriveType^=2^) GET DriveLetter /VALUE
') do for /F "delims=" %%L in ("%%V") do (
echo current drive: %%L
rem change to the root of the drive temporarily:
pushd %%L\
rem do your actions here, like `copy` for example (give true destination!):
copy *.* nul
rem change back to previous directory:
popd
)
在for /F
命令中使用时,需要转义几个特殊字符;这解释了额外的^
字符。
实际上有两个嵌套的for /F
循环,其中外部处理wmic
输出(有关详细信息,请参阅for /?
)。由于wmic
输出可能导致麻烦的额外回车,我使用了一个小技巧:我在另一个循环中嵌套了另一个for /F
循环,每次迭代时只迭代一次。
您可以声明其他命令来执行不同的操作,而不是内部示例copy
命令。