3

私はsystem()関数を知っていますが、それはそれ自身の環境を作成するので、ここで設定されたすべての変数がメインコンソールに転送されるわけではありません。ユーザーが書いたコマンドや*.batファイルで実行されたコマンドを送信できるのでしょうか。

これが必要な理由は、親CMDプロセスのenv変数を設定する方法を探すためです。そして、はい、私はシステムが私にそれをさせたくないことを知っています、しかし多分それのためのいくつかの回避策があります...

アイデアは、次のように、入力パイプを介して送信されるすべてのものを変数として設定するアプリを作成することです。

echo Bob| setvar name

それで:

echo %name%

を生成しますBob

全体的なアイデアは、ファイル名で許可されているforような特別なバッチ文字の特性を考慮して、任意のプログラム出力(コマンドで行う方法を知っています)から変数を簡単に設定できるようにすることです。^!%多くのcmdスクリプトが簡単になります。

4

1 に答える 1

1

プログラムと同じコンソール ウィンドウでプログラムを実行できます。これが のデフォルトの動作ですCreateProcessMSDN には、コンソールを共有する関連プロセス間で何が起こるかについての詳細があります。独自のプログラムの実行を続行する前に、子プロセスが終了するのを待つことをお勧めします。

ただし、それはあなたの本当の目標には役立ちません。プログラムが実行されるウィンドウは、その祖先プロセスの環境変数とはまったく関係ありませ実際の問題の解決策を他の場所で探す必要があります。

于 2012-05-21T16:09:03.433 に答える