批量列出USB驱动器,然后复制内容

时间:2014-12-04 20:21:59

标签: windows usb-drive wmic

我正在尝试创建一个列出usb驱动器的批处理文件(它通常是一个连接的),然后插入驱动器或从驱动器复制内容。

我正在尝试使用wmic列出驱动器,然后我收到驱动器号。但我不知道如何使用我从wmic获得的信息执行cd命令。

wmic命令:

wmic volume where "drivetype=2" get driveletter /format:table | findstr : 

2 个答案:

答案 0 :(得分:1)

为什么不使用Powershell列出磁盘然后过滤USB驱动器并从那里开始?

建议进一步阅读: http://blogs.technet.com/b/heyscriptingguy/archive/2013/08/26/automating-diskpart-with-windows-powershell-part-1.aspx

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命令。