问题是动态查找 USB 并备份到它?

Issue dynamically finding a USB and backing up to it?

需要一些编码方面的帮助,我正在尝试编写一个 bat 文件,该文件在被触发时会查找 USB 驱动器,然后将目录复制到其中。如果 USB 未插入,它将等待用户插入。这是我目前的代码:

@echo off 
COLOR 70
@title Finding and Backing Up
@echo Please plug in your USB.

:Find
for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
IF EXIST %%a:\backupusb.id SET %%USBDRV=%%a: && GOTO UniTest:
)
GOTO :Find

echo I will look for your work and ensure it's backed up against the USB's Database, please wait.

:UniTest
IF EXIST "%USERPROFILE%\Documents\University" (
echo Found University work, please wait while it's backed up.
xcopy "%USERPROFILE%\Documents\University" "%USBDRV%\Backups\University" /S /D /Y /I /E > nul
echo University work located and successfully backed up.
GOTO End:
) ELSE (
echo I could not find any University folder in your Documents folder
GOTO End:
)

:exit
echo Done!

唯一的问题是,在编码方面我仍然比较迟钝,虽然它位于 'please plug in your USB' 正确的位置,但只要插入 USB,它就会继续执行脚本,但是它会将其转储到随机硬盘,通常是 C:/。我似乎无法弄清楚哪里出了问题,我知道我的运气是该死的小事。

有什么建议或解决方案吗?非常感激! 谢谢 -朱利安

你那里有一些看似随机的 %%。

改变

IF EXIST %%a:\backupusb.id SET %%USBDRV=%%a: && GOTO UniTest:

IF EXIST %%a:\backupusb.id SET USBDRV=%%a: && GOTO UniTest

仅供参考 在您的 goto 语句之后不需要任何 :(冒号),只需标签的文本部分。例如goto endgoto find

对设置 USBDRV 环境变量的方式稍作更改即可解决此问题。

更改此行:

IF EXIST %%a:\backupusb.id SET %%USBDRV=%%a: && GOTO UniTest:

对此:

IF EXIST %%a:\backupusb.id SET USBDRV=%%a:&& GOTO UniTest:

(即环境变量前不需要%%,冒号和&&之间不需要space)。