首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过批处理文件为系统设置环境变量

通过批处理文件为系统设置环境变量
EN

Stack Overflow用户
提问于 2011-07-10 16:02:00
回答 2查看 18.4K关注 0票数 3

我正在使用一个.bat文件来为我的引擎自动化一些任务(一旦它是从存储库中新克隆出来的)。其中一项任务是设置环境变量。我使用SETX命令,并将命名变量的路径设置为%CD%,即从安装程序运行的目录。

这很好,尽管用户需要log-off/log-on,这可能很烦人。如果变量被设置为系统变量,则不需要此log-off/log-on循环(我不确定为什么重新启动Visual对用户环境变量没有影响.也就是说,它不会检测到任何变化,但是它会检测到系统变量中的变化)。因此,我继续使用-m命令。不幸的是,这要求批处理文件具有管理权限。没有问题;我以管理员身份运行了批处理文件。现在我遇到了一个问题。当前目录变量%CD%从运行安装程序的目录更改为C:\Windows\System32

所以现在开始讨论这个问题。如何通过批处理文件设置系统环境变量,该文件使用了%CD% ,而不默认为 C:\Windows\System32.。作为一个注意事项,相当多的人使用安装程序和我希望这个过程是无痛和错误尽可能自由。这意味着,没有手动输入是首选。目前,如果没有管理权限和-m运行,唯一需要的就是一个log-off/log-on循环。否则,一切都是自动化的。

EN

回答 2

Stack Overflow用户

发布于 2011-07-29 20:31:31

%0是批处理文件的名称。您可以使用%~dp0 0与pushd一起更改为批处理文件所在的目录,并从那里工作到任何目录。因此,这样一个批处理文件的一般结构是:

代码语言:javascript
代码运行次数:0
运行
复制
@echo off
pushd %~dp0
rem batch file commands go here
popd

至于您的问题..。在设置了环境变量之后,每个进程都可以使用用户模式环境变量。但出于某种原因,目前的进程没有收到它。但是Explorer.exe (它处理“开始”菜单和run命令)似乎每次需要它时都会获取环境的一个新副本。

以这种方式启动的进程将具有新的环境,而从命令行启动的进程将继承旧环境,而不需要setx设置的新变量。

您可以通过将批处理文件更改为setsetx变量来缓解此问题。

这是一些让你开始的代码。它会的

显示当前工作的directory

  • Change脚本所在的目录

  • 在运行的shell中设置变量MYTEST,从shell设置用户的environment

  • Launch记事本中的变量,以便您可以尝试并打开文件名%MYTEST%
  • 尝试使用%,它工作于

H 119注意当前目录是如何更改的,btw.

  1. 要求您从“开始”菜单

手动启动记事本。

这是代码,HTH

代码语言:javascript
代码运行次数:0
运行
复制
@echo off

::This is where we start
echo Current directory is %CD%
echo %0

::We change the current directory to where the script is running
pushd %~dp0

echo Current directory is %CD%

::if you want, you can move relatively from it
cd..

::Set an environement variable
set MYTEST=%~f0
::Make a copy avaiable to other processes
setx MYTEST "%MYTEST%"

::Now I should be able to fire notepad and open %%MYTEST%% 
::(you can use the %% sign in the open box)
::Let's start a copy from this process
::
echo Starting notepad, open the file %%MYTEST%%, you should this 
echo file thanks to the set statement.
notepad
echo Now launch Notepad from the start menu and open the file %%MYTEST%%, 
echo you should this file thanks to the setx statement.

::Wherever you end up, restore the current directory
popd

echo Current directory is %CD%
票数 5
EN

Stack Overflow用户

发布于 2013-05-30 05:40:22

考虑一下,要使用bat脚本安装ant,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
echo off 
echo SETTING UP ANT FOR THE BUILD ....
set ANT_HOME=%~dp0%build\apache-ant-1.8.2
set ANT_BIN=%~dp0%build\apache-ant-1.8.2\bin

SET path=%path%;%ANT_BIN%;%ANT_BIN%;

echo PATH: %path%
echo ANT_HOME: %ANT_HOME%
echo ANT_BIN: %ANT_BIN%
echo ANT GOT INSTALLED ....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6642112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档