2013-10-24 1 views
0

하나의 loacation에서 다른 곳으로 이동해야하는 FILE 작업을하고 있지만 아래 코드를 실행하면 잘못된 구문이 포함 된 오류가 계속 발생합니다. 나는 @Move 문을 인쇄 할 때 나는이 얻을 :EXEC MASTER.DBO.XP_CMDSHELL MOVE

MOVE \ appdev1 \ SQLTEST \ RedFlag \ RedFlag 주소 변경 새로운 직불 Issued.pdf \ appdev1 \ SQLTEST \ RedFlag \ 2013- (내가 가야 생각입니다) 10-24_REDFLAG_.pdf

I는 다음과 같이 실행하려고 : 내가 잘못 뭐하는 거지에

EXEC MASTER.DBO.XP_CMDSHELL @MOVE 

어떤 제안? Move 문 앞에 '를 추가해야합니까?

충분한 정보가되기를 바랍니다.

답변

1

경로/파일 이름에 공백이 있으므로 큰 따옴표로 묶어야합니다. 당신이 변수에서 경로를 구성하는 경우

SET @MOVE = 'MOVE "\\appdev1\... Issued.pdf" "\\appdev1\..._.pdf"'; 

이 아무것도 변경되지 않습니다. T-SQL에 머물고, 당신은 내가 가정 같은 매개 변수가 다음과 같습니다

SET @MOVE = 'MOVE "' + @OldFile + '" "' + @Printed + '"'; 
당신이 다른 언어로이 일을하는 경우 스스로를 해결해야합니다

.

DECLARE @MOVE VARCHAR(255), 
    @OldFile VARCHAR(255) = '\\foo\some filename.pdf', 
    @Printed VARCHAR(244) = '\\blat\something else.pdf'; 

SET @MOVE = 'MOVE "' + @OldFile + '" "' + @Printed + '"'; 

PRINT @MOVE; 

결과 : 여기 T-SQL에서 작동하는 방법에 대한 간단한 데모입니다

MOVE "\\foo\some filename.pdf" "\\blat\something else.pdf" 

나는 어쩌면 사람들은 당신이 가지고 어떤 값에서 오는, 여분의 따옴표를 볼 수 없습니다 귀하의 매개 변수.

+0

Move (매개 변수)는 실제로 변수를 사용하여 설정됩니다. 그래서 그것은 같아요. Move (parameter) = 'Move'+ _OldFile + ''+ _Printed – user2084896

+0

다른 언어를 사용하고 있지 않습니다. 나는 아직도 너무 많은 인용 부호를 준 답안의 하단 부분을 보지 않았습니다. 나는 정말로 똑똑한 의견이 뒤에 남겨져있을 수 있었다고 생각한다, 나는 단지 도움을 얻기 위해 여기에왔다. – user2084896

+0

@ user2084896 "너무 많은 따옴표"가 무슨 뜻인지 이해하지 못합니다. T-SQL에서'_OldFile'라는 매개 변수를 가질 수 없기 때문에 다른 언어라고 생각했습니다. 그래서'_OldFile'에 무엇이 들어 있습니까? –