【发布时间】:2019-11-08 10:01:45
【问题描述】:
我想在我的 win server 2016 上创建完整的系统备份并将其保存到外部 SSD。
我有一个批处理脚本,通过:
- 启用并添加计划备份
- 开始备份
我的问题是当我输入卷 GUID 作为我的backupTarget 时,脚本失败并且我收到此错误:
错误 - 找不到指定的备份位置或不是受支持的备份存储位置。
代码:
REM target and source are read from config file. I'll only add lines i have problem with here.
REM target={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
REM source=c:
wbadmin enable backup ^-addTarget:"%target%" -schedule:21:00 -include:c: -vssFull -quiet
wbadmin start backup ^-backupTarget:"\\?\Volume%target%" -include:"%source%" -vssFull -systemState -quiet
直接在 cmd 中运行时,我删除了 ^:
wbadmin enable backup -addTarget:"%target%" -schedule:21:00 -include:c: -vssFull -quiet
wbadmin start backup -backupTarget:"\\?\Volume%target%" -include:"%source%" -vssFull -systemState -quiet
预期的结果应该是它设法创建备份而不会失败,就像我直接在cmd.exe 中运行命令一样。
我在cmd.exe 中尝试了同一行,它可以工作,但是从脚本中运行它会失败。这是为什么呢?
我是否需要添加一些类似^ 的转义字符才能正确读取-backupTarget?
感谢我能得到的所有帮助!
【问题讨论】:
-
当我在此处复制文本时,我看到引号开头的双反斜杠在 "\\?\Volume%target%" 中更改为单个
-
应该是
\\?\Volume\%target%而不是\\?\Volume%target%!此外,完全没有理由用插入符号转义-,它不是毒字符。 -
感谢您之前回答和编辑我的问题。我已经尝试了您的建议,但仍然出现相同的错误消息。关于 ^,我知道这很奇怪,但在谷歌搜索时发现了一个提示,即在脚本中键入 -backupTarget 时需要该提示,当我输入它时,我的脚本有效(在那种情况下,我使用了 f: 而不是 guid)
-
我真的不在乎你的谷歌搜索结果,用于为命令行进程提供参数的标准字符是
/和-,我根本不接受内置的 Windows命令需要转义这个无毒的标准参数字符。您确定您使用的 GUID 100% 正确吗?
标签: batch-file backup windows-server-2016