0

子プロセスが環境変数を変更したり、親プロセスに戻したりすることは可能ですか?

例えば:

一連のアクセス データベースを実行するバッチ ファイルがあります。データベースがクエリを実行したら、VBA を使用して値をバッチ ファイルに戻したいのですが、これを機能させることができないようです。

関数を使用して親変数を読み取ることはできますが、getEnvironmentVariable機能してsetEnvironmentVariableいないようです。

4

2 に答える 2

2

vba には、それを呼び出したバッチ環境の独自のコピーがあります。ローカル コピーに値を設定できますが、vba が制御をバッチ スクリプトに戻すと消えます。したがって、答えはノーです。やりたいことを直接行うことはできません。

あなたがやりたいことは、共通のニーズです。1 つの解決策は、値を一時ファイルに書き込み、親バッチ スクリプトで値を読み取って一時ファイルを削除することです。

vba が stdout に書き込める場合は、一時ファイルを回避できます。できると思いますが、よくわかりません。バッチ スクリプトは、FOR /F を介してデータベースを呼び出し、stdout 出力を処理できます。FOR /F が出力を解析する方法には多くのオプションがあります。

一般的な構文は次のとおりです。

for /f "options" %%A in ('yourCommand') do (REM process values using %%A)

FOR コマンドの完全なヘルプを表示するには、コマンドプロンプトからHELP FORorを入力します。FOR /?

于 2013-10-16T19:09:50.447 に答える