将文件移动到可更改的驱动器位置(如果在 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
如何将文件移动到具有可变驱动器盘符范围的 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