コマンドプロンプトからのWindows環境変数の設定と取得? を見ましたが、私の質問は少し異なります。
端末プログラムがあるとしましょう、myprogram.c
-> myprogram.exe
、環境変数を読み取ります。いう:
...
char *valueMYVAR = getenv("MYVAR");
printf("MYVAR is %s\r\n", (valueMYVAR==NULL)?"":valueMYVAR );
...
ここで、Linux bash
を使用している場合、次のように、コマンドラインで書き込むだけで、プログラムを実行するために、環境変数を一時的に設定できます。
$ MYVAR=1 ./myprogram.exe
Windowsコマンドプロンプト(cmd.exe
)?私が試してみました:
> SET MYVAR=1 myprogram.exe
...しかし、機能しません-ある意味でmyprogram.exe
はまったく実行されず、おそらくSET
コマンドのコマンドラインの一部として解釈されます。
この種のことは、Windowsコマンドプロンプトで実行できますか?必要に応じて、Windows 10を使用します。
編集:これらが見つかりました:
Windows CLIのコマンド置換のようなものはありますか?
Windowsでは、「()」演算子はBashコマンドの置換と同様の動作をします。
https://stackoverflow.com/questions/8055371/how-do-i-run-two-commands-in-one-line-in-windows-cmd
2000年以降のすべてのMicrosoft OSでこのようになり、今日でも良好です。
dir & echo foo
だから、私は試しました:
> (SET MYVAR=1 && myprogram.exe)
...そしてこれは実際に機能します-ただし、Windowsの括弧は「サブシェル」(または「サブプロセス」)ではないようです。したがって、現在のシェルに値「リーク」を設定しますつまり、myprogram.exe
上記のコマンドの後でも、引き続きMYVAR=1
、Linuxの場合、MYVAR
は未設定のままになります)。
それで、これを単一のコマンドライン-とで一時的に行う方法はありますか?
setlocal
を使用してバッチファイルを実行できます
またはcmd行で、現在の環境を継承する別のcmd.exeを開始しますが、変更は揮発性です。
cmd /c "SET MYVAR=1&myprogram.exe"
このコマンドを試してください:
set Foo=bar & abc.exe & set Foo=
このコマンドは次のことを行います。
Foo
変数にbar
値を設定します。abc.exe
commandを実行します。Foo
変数の設定を解除します。