将文件移动到可更改的驱动器位置(如果在 XP 中安装 "for a in range")

Move file to a changeable drive location if fitted "for a in range" in XP

如何将文件移动到具有可变驱动器盘符范围的 USB 驱动器,该驱动器盘符范围取决于机器它可能是驱动器 E、F、G 或 H,在 Windows 嵌入式 XP 中,只有永远一次安装一个 USB 驱动器,所以它只有在安装时才能移动,我可以创建文件并且它在 Windows 7 中移动但在 Windows Embedded XP 中不移动,有什么区别在 XP 中可用的选项,脚本将只在 XP 机器上使用。

REM ------ Creation of the ZIP file ------

%SupervisorPath%-ZipPortable\App-Zipz 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

如果文件未移动,我是否也可以创建错误消息然后删除文件,因为它占用了宝贵的 space 驱动器?

这是我使用的解决方案。要求 USB 驱动器已命名并且您知道。因此,假设您的 USB 名为“8GB”

如果您运行以下命令:

wmic logicaldisk list brief

您将获得包括卷名在内的驱动器列表。

使用此列表,您可以将其通过管道传递给 Find 命令,如下所示:

wmic logicaldisk list brief | find "8GB"

这将 return 关于您的 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 included 他们将变量 errorlevel 设置为 0 以外的某个值(0 表示成功执行)因此您需要做的就是在 move 命令之后添加一个 if 语句,例如:

if %errorlevel% GTR 0 del %BackupPath%\Backup\%FileStamp%.zip