首页 > 解决方案 > 如何选择除了pendrive 以外的可用驱动器进行备份操作?

问题描述

我为我的家用电脑制作了这个脚本,以便轻松地将我收集的所有照片和视频备份到一个外部硬盘驱动器。

SET BackUpDir=%~d0\BackUpDir

for %%d in (C:\ D:\) do (
    if exist %%d (
    robocopy %%d %BackUpDir% *.jpg *.jpeg *.dng *.nef *.mp4 *.mov *.wmv *.avi *.3gp *.3g2 /MIN:20000 /MAX:2703622144 /s /W:15 /XD C:\$WINDOWS.~BT "C:\System Volume Information" C:\Windows "C:\Program Files" C:\Boot C:\MSOCache C:\Recovery "C:\Program Files (x86)" "C:\Documents and Settings" C:\ProgramData "C:\Users\All Users" C:\Users\Default "C:\Users\Default User" C:\Users\defaultuser0 C:\Users\Public )
)
exit 0

我有几台具有不同分区结构的计算机。其中一个只有驱动器C:D:,但例如第二个有五个分区。

现在我有了这行代码,只在两个分区上查找文件:

for %%d in (C:\ D:\) do (

我不想每次都编辑脚本来添加其他分区,例如第一台计算机上不存在,但第二台计算机上确实存在。我希望我的脚本自动查找计算机上的所有可用分区,除了执行备份脚本的外部硬盘驱动器。

如何更改上面的命令行来实现这一点?

我想要这样的东西:

for %%d in ("list of all partition" except "backup external hard drive") do (

标签: batch-file

解决方案


您已经知道如何获取要排除的驱动器,它位于第一行,%~d0因为您使用它来设置要备份到的目录。

此外,您可以使用exist它来找出实际存在的驱动器。

因此,以下脚本将处理所有存在且与运行脚本的驱动器不匹配的驱动器:

@echo off
rem Expand following list as needed.
for %%d in (C D E F G H I J) do (
    if exist %%d:\. if not %%d:==%~d0 (
        echo Processing drive %%d
    )
)

当我从C:系统上的驱动器运行该驱动器时,该驱动器具有C:驱动器、空D:DVD 和E:SSD,我得到:

Processing drive E

推荐阅读