1

バッチファイルを読んでいますが、理解できません。誰か説明してもらえますか?

%0 はバッチ ファイルの名前だと理解していますが、繰り返し処理できますか? それともフォルダを表す便利な方法ですか?

ファイル内に変数 %BatchPath% が見つかりません。どこで定義されていると思いますか? そして、APATH は 2 つのループで定義されているようですか?

for %%x in (%0) do set APATH=%%~dpsx
for %%x in (%BatchPath%) do set APATH=%%~dpsx
pushd %APATH%
4

2 に答える 2

3

単一の値を反復処理できます。setこれは、ステートメントが 1 回実行されることを意味します。次に~dps、ディレクトリだけが残るように、ファイル名を取り除きます。

最初の行は、実際には現在のスクリプトのパスと名前である %0 に対してこのアクションを実行します。

2 行目は、指定された変数に対して同じアクションを実行します。ここが楽しい部分です%BatchPath%。if が空の場合、何も繰り返されないため、setその行のステートメントはまったく実行されません。

これは、デフォルトではスクリプトのディレクトリですが、%BatchPath%このスクリプトを呼び出す前にパスを明示的に割り当てることでオーバーライドできます。

pushdではディレクトリを保存できるので、後で を使用して戻ることができますpopd。これにより、スクリプトが別のディレクトリにジャンプし、終了する前にシェルを元のディレクトリに復元できるようになります。

于 2013-01-28T10:24:22.027 に答える
0

%0は現在のバッチファイルです。
%%〜dpsxは、現在のバッチファイルの短いパスをここに示します。たとえば「D:」のドライブ名を示します。 プッシュ現在のディレクトリを指定されたディレクトリに変更する前に、popdコマンドで使用する現在のディレクトリの名前を格納します。APATHは、パスを格納するために使用される変数です。

したがって、基本的に、スクリプトはスクリプトファイル名、そのドライブの場所に関する詳細をフェッチし、最後のバッチファイルが実行された場所などとして使用されるように保存します。

于 2013-01-28T10:31:00.883 に答える