我正在处理一个文件,我需要从一个loacation移动到另一个,但是当我运行下面的代码时,我不断收到一个错误,它的语法不正确。当我打印@Move语句时,我得到了:(我想我应该得到的)
MOVE \ appdev1 \ sqltest \ RedFlag \ RedFlag地址更改新借记Issued.pdf \ appdev1 \ sqltest \ RedFlag \ 2013-10-24_REDFLAG_.pdf
我试图像这样运行它:
EXEC MASTER.DBO.XP_CMDSHELL @MOVE
有关我做错的任何建议吗?我是否需要在Move语句前面添加'?
我希望这是足够的信息。
答案 0 :(得分: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"
我没有看到任何额外的引号,所以也许那些来自你参数中的任何价值。