如果标注命令行中有反斜线,Site Recovery Manager 会使所有反斜线数量增加为原来的两倍。
问题
命令行系统解释程序仅将文件路径中的双反斜线视为单反斜线。如果标注命令在参数中而不是在文件路径中需要反斜线,且该命令无法将双反斜线转换为单反斜线,则标注命令可能会失败,并发出错误消息。
例如,可以向工作流添加标注步骤并输入以下文本作为命令:
c:\Windows\system32\cmd.exe /C "C:\myscript.cmd" a/b/c \d\e\f \\g\\h c:\myscript.log
作为标注步骤的结果,
Site Recovery Manager 将运行以下命令:
c:\\Windows\\system32\\cmd.exe /C "C:\\myscript.cmd" a/b/c \\d\\e\\f \\\\g\\\\h c:\\myscript.log
如果 myscript.cmd 未将双反斜线更改为单反斜线,且参数 \d\e\f 和 \\g\\h 将区分反斜线的个数,则 myscript.cmd 会失败。
解决方案
- 另外创建一个命令行批处理文件,以包含命令和全部所需的参数。标注步骤无需任何参数即可运行此另外创建的批处理文件。例如,解决方案如下所示:
- 在文本编辑器(如记事本)中,创建文件 c:\SRM_callout.cmd,该文件包含以下内容:C:\myscript.cmd a/b/c \d\e\f \\g\\h c:\myscript.log
- 在恢复计划标注步骤中,键入要运行的命令: c:\\Windows\\system32\\cmd.exe /C c:\SRM_callout.cmd
- 向使用单反斜线替换双反斜线的原始脚本文件中添加代码。
- 在脚本文件 c:\myscript.cmd 的开头添加类似于以下示例的代码。
@echo off set arg2=%2 set arg3=%3 set fixed_arg2=%arg2:\\=\% set fixed_arg3=%arg3:\\=\%
如果在脚本中使用 shift 命令,则所有与反斜线相关的参数都以这种方式处理。 - 如果在脚本中不使用 shift 命令,请进行以下更改:
将
%2替换为%fixed_arg2%。将
%3替换为%fixed_arg3%。 - 请勿更改标注步骤命令。
- 在脚本文件 c:\myscript.cmd 的开头添加类似于以下示例的代码。