需要一些编码方面的帮助,我试图编写一个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
答案 0 :(得分:1)
你有一些看似随机的%%。
更改
IF EXIST %%a:\backupusb.id SET %%USBDRV=%%a: && GOTO UniTest:
到
IF EXIST %%a:\backupusb.id SET USBDRV=%%a: && GOTO UniTest
仅供您参考您的goto语句之后,您不需要任何:(冒号),只需要标签的文本部分。例如goto end
或goto find
答案 1 :(得分:1)
设置USBDRV环境变量的一个小改动应该修复它。
更改此行:
IF EXIST %%a:\backupusb.id SET %%USBDRV=%%a: && GOTO UniTest:
到此:
IF EXIST %%a:\backupusb.id SET USBDRV=%%a:&& GOTO UniTest:
(即,在环境变量前面不需要%%,冒号和&&之间没有空格。)