为SQL作业串起CmdExe命令

时间:2012-09-12 14:03:04

标签: cmd sql-job

我正在处理一个简单的CmdExe操作,作为夜间SQL作业的一部分运行。该作业的核心功能是它创建一个导出的txt文件到我们的合作伙伴通过ftp访问的文件夹。我们希望让作业在创建新文件之前将文件夹中的任何文件移动到备份位置。我做了一个简单的移动命令,如下面的一个作为启动器:

MOVE "\\Server1\e$\FTPFolder\1234.TXT" "\\Server1\e$\Backup\"

这个命令工作正常。但是,由于这是一个测试环境,现在需要对几个作业进行操作以及转移到生产,我希望用变量格式化它,以便我可以轻松地更改服务器名称上下文。从我的搜索中,正确的语法应该是这样的:

SET location=Server1 && MOVE "\\%location%\e$\FTPFolder\1234.TXT" "\\%location%\e$\Backup\"

但是,使用该作业执行此操作失败并使用cmd进行测试将返回“文件名,目录名称或卷标语法不正确”。但是,如果我通过先设置变量在cmd中将它们断开,请按Enter键,然后创建相同的Move命令。是否有一些我缺少的东西,需要将它们正确地串在一起?

1 个答案:

答案 0 :(得分:0)

Cmd在运行之前评估整行。所以它是:

SET location=Server1 && MOVE "\\\e$\FTPFolder\1234.TXT" "\\\e$\Backup\"

因为在评估%location%时未定义。告诉他在运行时评估,用%替换! (帮助设定)     SET location = Server1&&移动“\!location!\ e $ \ FTPFolder \ 1234.TXT”“\!location!\ e $ \ Backup \”