我想设置一个环境变量,然后生成一个Windows资源管理器窗口,使得从这个新的Explorer窗口启动的进程继承该环境变量。我想这样做,因此我与TortoiseSVN shell扩展集成的diff工具可以访问项目启动脚本中设置的项目特定的环境变量。但是这样做的明显方法似乎在某处失去了环境变量:
set MYVAR="foo"
set | findstr MYVAR
explorer .
set | findstr MYVAR
我已将Windows资源管理器设置设置为spawn a new process for each Explorer window,希望这会有所帮助,但似乎没有效果。
我可以使用setx
而不是set
来全局存储变量,但是如果我想让多个窗口拥有不同版本的MYVAR(例如,如果我一次处理多个项目),这不起作用。
有没有办法设置特定于Windows资源管理器窗口的环境变量,它将由其所有子进程继承?
答案 0 :(得分:2)
打开CMD
setx foo bar
启动资源管理器
开始。
打开一个新的命令窗口(Shift +右键单击一个文件夹)
型
设置foo
输出
富=栏
现在,如果你回到2中打开的cmd并输入
setx foo bar2
在3开放的CMD仍会显示
>set foo
foo=bar
但是,如果您从6开放的CMD中的资源管理器中打开一个新的CMD.EXE,您将获得
>set foo
foo=bar2
这是有效的,因为SETX将创建或修改的变量传递给 future 命令窗口,但不会传递给当前或已创建的CMD.exe。
答案 1 :(得分:0)
程序获取它的启动过程环境变量的副本。因此,如果您生成一个新进程(文件夹选项 - 视图中的设置),这将起作用。
Set a=fred
explorer.exe
set a=cat
explorer.exe
并且记住你必须指定/n
命令行参数来强制在一个文件夹中放置两个窗口。