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

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

Stack Overflow用户
提问于 2011-07-10 08: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 12:31:31

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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
运行
AI代码解释
复制
@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-29 21:40:22

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

复制
相关文章
用于 SELECT 和 WHERE 子句的函数
1 一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。 2 3 包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。 4 5 注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。 6 7 你可以强制 My
用户1112962
2018/07/03
4.8K0
SQLException: 无效的列类型: 1111
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this para
程裕强
2022/05/06
1.6K0
mybatis无效列类型_未明确定义的列
select * from (这里能正确执行) tmp_tb where ROWNUM<=10) where row_id>=1
全栈程序员站长
2022/11/09
1.3K0
R语言列筛选的方法--select
我们知道,R语言学习,80%的时间都是在清洗数据,而选择合适的数据进行分析和处理也至关重要,如何选择合适的列进行分析,你知道几种方法?
邓飞
2022/02/09
7.8K0
R语言列筛选的方法--select
select count(*)、count(1)、count(主键列)和count(包含空值的列)有何区别?
最直接的方法,我想就是通过10053事件,来看下不同SQL对应的执行计划和资源消耗等情况,进而看看是否有些信息可以为我们所用。
bisal
2019/01/29
3.4K0
Hive中排除SELECT查询列
在 Hive 表中可能存在很多列,也有可能就存在几列。如果我们想要表中所有列,毫无疑问我们可以使用 SELECT *。但在某些情况下,我们可能拥有 100 多列,并且我们只不需要其中几列。在这种情况下,之前都是手动的添加 SELECT 查询中的所有列名。由于列数很多,比较啰嗦。因此,我们希望能在 Hive 中从 SELECT 查询中排除某些列。
smartsi
2019/11/27
5.6K0
select for update和select for update wait和select for update nowait的区别
CREATE TABLE "TEST6" ( "ID" VARCHAR2(30), "NAME" VARCHAR2(30), "AGE" NUMBER(2,0), "SEX" VARCHAR2(2), "ENAME" VARCHAR2(30), "ADDTIME" DATE ) insert into TEST6 (id, name, age, sex, ename, addtime) values ('1', '张三', 18, null, 'zha
郑小超.
2018/01/26
2.4K0
select * 和 select 所有字段的区别
之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解。
良月柒
2019/05/06
2.2K0
select * 和 select 所有字段的区别
之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解。
良月柒
2019/04/20
3K0
select * 和 select 所有字段的区别
select into from 和 insert into select 的用法和区别
select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建。insert into select from 要求目标表存在 下面分别介绍两者语法 一、INSERT INTO SELECT语句 1、语句形式为:
全栈程序员站长
2022/09/14
5.1K0
select into 和 insert int select
远程连接 MySQL mysql -h <ip> -P 3306 -u root -p 然后输入密码即可连接 mysql -u <user> -p -h <ip> 然后输入密码即可连接 SELECT INTO SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个表中。 MySQL 是不支持 select ... into ,但是可以使用 insert into ... select 当然也可以使用 create table <new table> select * from <old
zucchiniy
2019/10/30
3.3K0
SELECT * 和 SELECT 全部字段
【玩转 GPU】AI绘画、AI文本、AI翻译、GPU点亮AI想象空间-腾讯云开发者社区-腾讯云 (tencent.com)
疯狂的KK
2023/07/03
2.9K0
SELECT * 和 SELECT 全部字段
SQL中搜索中文无效或Select中文变乱码
当我们数据中含有中文,或我们想要Select出中文,当我去查询的时候默认情况下是无法搜索、无法显示的。 这是因为默认是不支持中文,只有NVARCHAR才支持中文 例子:
繁华是客
2023/03/03
1.1K0
SAP ABAP 技能:SELECT、SELECT SINGLE 和 SELECT DISTINCT
最近开始接触一些BW历程的内容,就看到有有一部分SELECT关键词不同,但是功能类似,就想着整理一下。
Adil_zhang
2023/05/10
4.6K0
[1177]Hive 窗口函数之lead() over(partition by ) 和 lag() over(partition by )
lag() over() 与 lead() over() 函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前 N 行的数据 (lag) 和后 N 行的数据 (lead) 作为独立的列, 从而更方便地进行进行数据过滤。这种操作可以代替表的自联接,并且 LAG 和 LEAD 有更高的效率。
周小董
2023/10/10
3K0
GROUP BY 后 SELECT 列的限制:which is not functionally dependent on columns in GROUP BY clause
标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、AVG 等)、常量。我们来看个例子
chenchenchen
2021/09/06
3.2K0
checkbox 和 radio 和 select 的使用
这样凡是设置name属性为Country的将变成单选,name为city的是多选。那么如何获得被选中的元素呢?
Mshu
2018/10/31
1.6K0
操作MyBatis引发Error setting null for parameter #X with JdbcType OTHER .无效的列类型
当我们用MyBatis操作数据库的时候传入null值,而且没有加入jdbcType类型的时候就会引发上述这种错误类型,
Arebirth
2019/09/24
5.5K0
epoll和selectepoll和select
epoll和select 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。 select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。 而epoll版宿管大妈会先记下每位同学的房间号, 你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。 如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。 同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性
JavaEdge
2018/05/16
1K0
select和epoll的前世今生
首先,select是有缺陷的,就是当事件发生(调用select)的时候,都需要在用户态和内核态之间拷贝fd数组,要知道用户态和内核态之间进行内存的拷贝是非常昂贵的,如果有上万级别的并发网络需要处理的时候,服务器根本处理不来。
混说Linux
2022/07/14
3250

相似问题

重写子select作为用“over(分区.)”生成的列的条件

40

无效语法和无效列

10

为SELECT分析和绑定变量。其中列IN ( ..。)查询

10

基于select的取消枢轴列

10

解释OVER子句

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文