0

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

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

我正在尝试像这样运行它:

EXEC MASTER.DBO.XP_CMDSHELL @MOVE

关于我做错了什么有什么建议吗?我需要在 Move 语句前面添加 ' 吗?

4

1 回答 1

3

您的路径/文件名中有空格,因此您需要用双引号括起来。

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"

我没有看到任何额外的引号,所以这些引号可能来自您参数中的任何值。

于 2013-10-24T17:36:04.160 回答