백슬래시가 호출 명령줄의 일부인 경우 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가 실패할 수 있습니다.

프로시저

  1. 명령과 필요한 모든 매개 변수를 포함하는 추가 명령줄 배치 파일을 만듭니다. 호출 단계에서는 이 추가 배치 파일을 인수 없이 실행합니다. 예를 들어 솔루션은 다음과 같습니다.
    1. 메모장과 같은 텍스트 편집기에서 다음 내용을 포함하는 c:\SRM_callout.cmd 파일을 만듭니다. C:\myscript.cmd a/b/c \d\e\f \\g\\h c:\myscript.log
    2. 복구 계획 호출 단계에 실행할 명령을 입력합니다. c:\\Windows\\system32\\cmd.exe /C c:\SRM_callout.cmd
  2. 이중 백슬래시를 단일 백슬래시로 바꾸는 코드를 원래 스크립트 파일에 추가합니다.
    1. 스크립트 파일 c:\myscript.cmd의 시작 부분에 다음 샘플과 유사한 코드를 추가합니다.
      @echo off
      set arg2=%2
      set arg3=%3
      set fixed_arg2=%arg2:\\=\%
      set fixed_arg3=%arg3:\\=\%
      

      스크립트에서 shift 명령을 사용하는 경우 백슬래시를 구분하는 모든 매개 변수가 이 방식으로 처리됩니다.

    2. 스크립트에서 shift 명령을 사용하지 않는 경우 다음과 같이 변경합니다.

      %2%fixed_arg2%로 바꿉니다.

      %3%fixed_arg3%로 바꿉니다.

    3. 호출 단계 명령은 변경하지 마십시오.