繁体   English   中英

如果在XP中“适合范围”,则将文件移动到可变的驱动器位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM