2012-09-12 5 views
1

간단한 CmdExe 작업을 수행하여 야간 SQL 작업의 일부로 실행하고 있습니다. 작업의 핵심 기능은 ftp를 통해 파트너가 액세스 할 폴더에 내 보낸 txt 파일을 만드는 것입니다. 새 파일을 만들기 전에 폴더의 모든 파일을 백업 위치로 옮기고 싶습니다. 아래 예와 같이 간단한 이동 명령을 수행했습니다.SQL 작업에 대한 CmdExe 명령 문자열 지정

MOVE "\\Server1\e$\FTPFolder\1234.TXT" "\\Server1\e$\Backup\" 

이 명령은 정상적으로 작동합니다. 그러나이 테스트 환경과 지금부터 여러 작업을 수행해야 할뿐만 아니라 프로덕션 환경으로 이동해야 할 필요가 있기 때문에 변수로이 형식을 지정하여 서버 이름 컨텍스트를 쉽게 변경할 수 있습니다. 내 검색에서 올바른 구문은 다음과 같이해야합니다 :

SET location=Server1 && MOVE "\\%location%\e$\FTPFolder\1234.TXT" "\\%location%\e$\Backup\" 

그러나, 작업과이를 실행하는 것은 실패하고 cmd를 반환 "파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다"로 테스트. 그러나 cmd를 사용하여 변수를 먼저 설정하고 Enter 키를 누른 다음 동일한 Move 명령을 만듭니다. 이 문자열을 올바르게 함께 사용해야하는 누락 된 것이 있습니까?

답변

0

Cmd는 실행하기 전에 전체 라인을 평가합니다. 그래서 간다 : 그것은 평가 때

SET location=Server1 && MOVE "\\\e$\FTPFolder\1234.TXT" "\\\e$\Backup\" 

% 위치 %가 정의되지 않았기 때문에. 런타임시 평가하도록하려면 %를!로 바꿉니다. (도움말 세트) SET 위치 = Server1 & & MOVE "\! 위치! \ e $ \ FTPFolder \ 1234.TXT" "\! 위치! \ e $ \ Backup \"