3

会社の内部ユーザー向けにセットアップ プログラムを開始する Windows バッチ ファイルを作成しようとしています。イントラネットにバッチ ファイルへのリンクがあります。リンクをクリックすると (少なくとも IE9 ではサポートする必要があります)、ファイルを実行するか保存するかを尋ねられます。ほとんどのユーザーが [実行] をクリックすると、バッチ ファイルが IE の子プロセスとして実行され、その環境変数が継承されます。ここで私の問題が発生します。

ブラウザーがしばらく開いていた場合、ブラウザーの起動後に (ユーザーまたはシステム レベルの) 環境変数がユーザーの PC に設定されている可能性があるため、バッチ ファイルはその変数を認識せず、それが必要です。に。

バッチ ファイルが常に新しい環境で実行されるようにする方法を見つけたいと考えています。

これは機能します

rem bootstrap batch file
explorer the_real_batch_file.bat

Explorer.exeユーザーとシステムの環境変数の変更に対するアラートですが、これはそうではありません

rem bootstrap batch file
explorer the_real_batch_file.bat some_param

は、some_paramWindows エクスプローラーを混乱させます (そして、新しい Windows エクスプローラー ウィンドウを起動するだけです)。パラメータを「実際の」バッチ ファイルに渡せるようにする必要があるため、これは問題です。

誰でもこれを回避する方法を見ることができますか?

4

2 に答える 2

2

申し訳ありませんが、私はここに来たばかりで、上の質問にコメントを追加することが一生わかりません...

いずれにせよ、explorer.exe はバッチ ファイルの実行を処理しませんが、cmd /c は処理します。

やってみる

cmd /c "batchfile.bat argument"

別の方法は、ソフトウェアでどの環境変数が呼び出されているかを把握し、それらをバッチで呼び出して、それらが正しいことを確認し、そうでない場合は失敗することです。IE

IF "%ENVIORMENTALVARIABLE%" NEQ "WhatitShouldBe" (goto :fail) else goto continue
:fail
echo this failed <insert exitcode here>
:continue
于 2012-11-09T17:47:06.563 に答える
2

私は自分の問題を少し単純化しました。start explorer my_batch_file必要な引数を含む特注の中間バッチ ファイルを生成するため、(バッチ ファイルへの引数なしで)実行できるようになりまし%TEMP%た。

だから私はこれを行います:

start explorer %TEMP%\temp_batch_file.bat

そして、私は中temp_batch_file.batに持っています

call my_original_batch_file.bat some_argument

これはうまくいくようです。

于 2012-11-12T10:19:32.840 に答える