[英]Move file to a changeable drive location if fitted “for a in range” in XP
在Windows Embedded XP中,如何将文件移动到具有可变驱动器号范围的USB驱动器,具体取决于它可能是驱动器E,F,G或H的机器,因此一次只能安装一个USB驱动器,因此它只有在安装了它之后才能移动,我可以创建文件,并且它可以在Windows 7中移动,但在Windows Embedded XP中不能移动,在XP中可用的选项有什么区别,该脚本仅在XP计算机上使用。
REM ------ Creation of the ZIP file ------
%SupervisorPath%\7-ZipPortable\App\7-Zip\7z 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。
使用此列表,您可以将其通过管道传递给“查找”命令,如下所示:
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:\tmp\usbdriveinfo.txt
存储了我们想要的信息之后,我们可以使用以下命令将其读回到变量中:
set /p driveLetter=C:\tmp\usbdriveinfo.txt
现在该变量具有整个字符串,但我们只需要驱动器号,因此我们将其缩短为:
set driveLetter=%driveLetter:~-,2%
现在变量driveLetter仅包含驱动器号“ F:”
因此,如果您想要全部在一起:
wmic logicaldisk list brief | find "8GB" > C:\tmp\usbdriveinfo.txt
set /p driveLetter=C:\tmp\usbdriveinfo.txt
set driveLetter=%driveLetter:~-,2%
至于检查move命令是否失败。 如果任何命令移动失败,则将变量errorlevel设置为0以外的其他值(0表示成功执行)。因此,您要做的就是在move命令后添加if语句,例如:
if %errorlevel% GTR 0 del %BackupPath%\Backup\%FileStamp%.zip
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.