1

夜間の SQL ジョブの一部として実行する単純な CmdExe アクションに取り組んでいます。このジョブの中心的な機能は、エクスポートされた 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 に答える