0

如何将文件移动到具有可变驱动器号范围的 USB 驱动器,具体取决于机器,它可能是驱动器 E、F、G 或 H,在 Windows Embedded XP 中,一次只能安装一个 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

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

4

1 回答 1

1

这是我使用的解决方案。要求 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:\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%

至于检查移动命令是否失败。如果任何命令包含移动失败,它们会将变量 errorlevel 设置为 0 以外的某个值(0 表示成功执行)因此您需要做的就是在移动命令之后添加一个 if 语句,例如:

if %errorlevel% GTR 0 del %BackupPath%\Backup\%FileStamp%.zip
于 2015-02-20T20:22:52.353 回答