EXEC MASTER.DBO.XP_CMDSHELL移动

时间:2013-10-24 17:34:00

标签: sql sql-server-2008 xp-cmdshell

我正在处理一个文件,我需要从一个loacation移动到另一个,但是当我运行下面的代码时,我不断收到一个错误,它的语法不正确。当我打印@Move语句时,我得到了:(我想我应该得到的)

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

我试图像这样运行它:

EXEC MASTER.DBO.XP_CMDSHELL @MOVE

有关我做错的任何建议吗?我是否需要在Move语句前面添加'?

我希望这是足够的信息。

1 个答案:

答案 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"

我没有看到任何额外的引号,所以也许那些来自你参数中的任何价值。