在Windows上从浏览器运行批处理文件,但不继承浏览器的环境变量

时间:2012-11-09 17:24:33

标签: windows batch-file environment-variables

我正在尝试编写一个Windows批处理文件,为我公司的内部用户启动安装程序。我们的Intranet上有一个批处理文件的链接。如果单击链接(至少在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_param混淆了Windows资源管理器(它只是启动了一个新的Windows资源管理器窗口)。我需要能够将参数传递给'真正的'批处理文件,所以这是一个显示停止。

有人能看到解决方法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

这似乎工作正常。