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

时间:2015-01-21 09:02:04

标签: batch-file xcopy

需要一些编码方面的帮助,我试图编写一个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!




唯一的问题是,在编码方面我还是比较狡猾的,而且当它位于'请插入你的USB'正确的是,只要插入USB,它就会继续使用脚本,但它会将其转储到随机硬盘驱动器,通常是C:/。我似乎无法弄清楚我哪里出错,知道我的运气,这是一件非常小的事情。

任何建议或解决方案?非常感激! 谢谢 -Julian

2 个答案:

答案 0 :(得分:1)

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

更改

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

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

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

答案 1 :(得分:1)

设置USBDRV环境变量的一个小改动应该修复它。

更改此行:

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

到此:

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

(即,在环境变量前面不需要%%,冒号和&&之间没有空格。)