batch-file - 如何选择除了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 (
解决方案
您已经知道如何获取要排除的驱动器,它位于第一行,%~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
推荐阅读
- c++ - 为什么会发生此链接器警告和段错误?
- java - 将 JLabels 动态添加到 JScrollPane
- arrays - 在列表数组 C# 中验证相等的对象 Json
- node.js - 猫鼬中的空模式
- javascript - 语义解析器的贪婪承诺解析
- php - 为动态添加的选择标签设置名称属性的正确方法是什么?(Laravel Blade)
- python - SpaCy v3 Textcat 不通过迭代更新
- java - 日期解析异常 EEE MMM dd HH:mm:ss z yyyy 在少数情况下
- xslt - XSLT: How to filter content from complex generated HTML pages?
- javascript - React 返回“无法读取未定义的属性“名称”。” (获取 API)