如何将文件移动到具有可变驱动器号范围的USB驱动器,取决于机器,它可以是驱动器E、F、G或H,在Windows Embedded XP中,一次只安装一个USB驱动器,因此只有安装了它才能移动,我可以创建文件,它可以在Windows 7中移动,但不能在Windows Embeded XP中移动,在XP中,可用于此操作的选项有什么不同,该脚本将仅在XP机器上使用。
REM ------ Creation of the ZIP file ------
%SupervisorPath%7-ZipPortableApp7-Zip7z a -tzip %BackupPath%Backup%FileStamp%.zip %BackupPath%Backup
REM ------ Move the backup file to a USB drive with File Name and Date Stamp ------
for %%A in (E F G H) do if exist %%A: (
echo Moving files to USB drive %%A:
move /y "%BackupPath%Backup%FileStamp%.zip" %%A: >nul && (
echo Files moved to USB drive successfully
goto :break
)
)
:break
如果文件没有移动,然后删除文件,因为它占用了驱动器上的宝贵空间,我还能创建一条错误消息吗?
这是我使用的一个解决方案。有一个要求,USB驱动器已经命名,你知道它。所以让我们说你的USB命名为"8GB"
如果运行以下命令:
wmic logicaldisk list brief
您会得到一个驱动器列表,其中包括VolumeName。
使用此列表,您可以将其管道传输到Find命令,如下所示:
wmic logicaldisk list brief | find "8GB"
它将返回有关VolumeName为8GB的驱动器的所有信息。它会看起来像这样。
C:>wmic LOGICALDISK LIST BRIEF | FIND "8GB"
F: 2 3080192 8082407424 8GB
现在有了这个命令,我们可以更进一步,并将其输出重定向到一个文件。像这样。
wmic logicaldisk list brief | find "8GB" > C:tmpusbdriveinfo.txt
在我们想要的信息被存储后,我们可以使用将其读回一个变量
set /p driveLetter=C:tmpusbdriveinfo.txt
现在这个变量有整个字符串,但我们只想要驱动器号,所以我们把它缩短如下:
set driveLetter=%driveLetter:~-,2%
现在变量driveLetter只包含您的驱动器号"F:"
所以,如果你想把它们放在一起:
wmic logicaldisk list brief | find "8GB" > C:tmpusbdriveinfo.txt
set /p driveLetter=C:tmpusbdriveinfo.txt
set driveLetter=%driveLetter:~-,2%
至于检查移动命令是否失败。如果任何命令未能包含move,它们会将变量errorlevel设置为0以外的某个值(0表示成功执行)。因此,您只需要在move命令后添加一个If语句,如:
if %errorlevel% GTR 0 del %BackupPath%Backup%FileStamp%.zip