【问题标题】:How can I run a batch script whenever a USB drive is connected每当连接 USB 驱动器时如何运行批处理脚本
【发布时间】:2023-02-22 17:09:04
【问题描述】:
我需要编写一个批处理脚本,它会等到 USB 驱动器连接好,然后再执行其余的代码。 (所以你运行脚本,它会等到 USB 插入)
我只找到了这段代码,它应该做这件事,但不幸的是它只在 USB 驱动器已经插入时才有效。
@echo off
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do (
for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
if %%d equ Removable (
echo Drive %%c is Removable (USB^)
)
)
)
)
【问题讨论】:
标签:
windows
batch-file
cmd
【解决方案1】:
要等到 USB 驱动器连接后再执行其余代码,您可以修改现有代码,方法是使用一个循环,每隔几秒检查一次 USB 驱动器,直到检测到它。以下是如何执行此操作的示例:
狂欢
复制代码
@echo off
set "usb_drive="
echo Waiting for USB drive...
:wait_for_usb
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do (
for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
if %%d equ Removable (
set "usb_drive=%%c"
)
)
)
)
if "%usb_drive%"=="" (
timeout /t 5 /nobreak >nul
goto wait_for_usb
)
echo USB drive %usb_drive% is connected. Continuing with the rest of the code...
rem Put your code here that should execute after the USB drive is connected
此代码使用 for 循环检查所有可移动驱动器,并将找到的第一个可移动驱动器的驱动器号存储在 usb_drive 变量中。然后它检查 usb_drive 变量是否为空,如果是,它使用超时命令等待 5 秒,然后循环返回以再次检查 USB 驱动器。检测到 USB 驱动器后,它会打印一条消息表明它已连接并继续执行您可以放入注释行的其余代码。