1

我正在开发一个简单的 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 命令,它可以工作。有什么我遗漏的东西需要做才能正确地将它们串在一起吗?

4

1 回答 1

0

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

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

因为当它评估 %location% 时没有定义。要告诉他在运行时进行评估,请将 % 替换为 ! (帮助设置) SET location=Server1 && MOVE "\!location!\e$\FTPFolder\1234.TXT" "\!location!\e$\Backup\"

于 2012-09-23T23:36:08.713 回答