2013-10-24 25 views
0

我上的文件,我需要移動從一個loacation到另一個工作,但是當我運行下面的代碼,我不斷收到一個錯誤,它具有不正確的語法。當我打印@Move語句時,我得到:(這是我認爲應該得到的)EXEC MASTER.DBO.XP_CMDSHELL MOVE

MOVE \ appdev1 \ sqltest \ RedFlag \ RedFlag地址更改新借方Issued.pdf \ appdev1 \ sqltest \ RedFlag \ 2013- 10-24_REDFLAG_.pdf

我試圖像這樣運行:

EXEC MASTER.DBO.XP_CMDSHELL @MOVE 

什麼我做錯了什麼建議?我需要在Move語句前添加''嗎?

我希望這是足夠的信息。

回答

1

您的路徑/文件名空間,所以你需要用雙引號包圍。

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

如果從變量構造路徑,這不會改變任何內容。在T-SQL停留,你會喜歡這個我相信參數:

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

你有,如果你在其他語言這樣做是爲了解決它自己。這裏是它如何工作的T-SQL的簡短演示:

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; 

結果:

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

我沒有看到任何額外的引號,所以也許這些都來自你有什麼價值你的參數。

+0

移動(參數)實際上是使用變量設置的。所以它就像一套移動(參數)=「移動」 + _OldFile +「」 + _Printed – user2084896

+0

我沒有做任何其他的語言,我只是沒有看到你的答案,這還是給了我太多的行情的底部。我真的認爲,聰明的評論可能已經落後了,但我只是來到這裏尋求幫助。 – user2084896

+0

@ user2084896我不明白你所說的「太多引號」的意思 - 我認爲這是一個不同的語言,因爲你不能有一個名爲'_OldFile'在T-SQL參數。那麼,'_OldFile'包含了什麼? –