0

MachineX は、サーバーのフェールオーバー ステータスに応じて、UNC パスを介して MachineA またはMachineBのいずれかへのバッチ ファイルを呼び出しています。フェールオーバーが発生した場合、MachineX はパス\\MachineB\files\Batch1.batを介してバッチを呼び出すことを認識しています。

追加のパラメーターを使用したり、MachineX が呼び出すマシンを認識する方法を利用したりせずに、マシン上の他のファイルにアクセスできるように、マシンが実行されているマシンをバッチ内で知る必要があります。これを行うには、マシン名を変数に格納します。

実行中のマシンが MachineX であるため、ホスト名変数を使用してバッチをプルすることはできませんが、バッチは常に完全修飾 UNC パスで呼び出されるため、引数 %0 にはパスにマシン名が含まれます。システムはミラーリング セットアップの一部であるため、バッチ ファイルは常に同一に保たれ、ハード コーディングはできません。

外部に移動することなく、バッチ ファイル内からマシン名を取得する最も簡単な方法は何ですか? 前もって感謝します。

編集:さて、私はそれを理解しました:

for /f "tokens=1,2,3,4,5 delims=\" %%a in ('echo %~p0') do set svrpth=%%a

これは、パス トレイルに 5 つ以下のフォルダーが存在する限り、問題なく機能します。これは、この目的では許容されます。

ご助力いただきありがとうございます。

4

1 に答える 1

0

パスがすべてのマシンで同じである場合、 %0 変数 (呼び出されたスクリプトへのパス) から単純に削除できるように見えます - 残っているのはマシン名になります

于 2013-06-04T19:30:10.913 に答える