将文件移动到可更改的驱动器位置(如果适合XP中的"范围内"



如何将文件移动到具有可变驱动器号范围的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

最新更新