中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 21:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么写一个自动完成系统环境变量添加的脚本
楼 主 怎么写一个自动完成系统环境变量添加的脚本 发表于 2006-10-24 22:21 ·  中国 江苏 无锡 联通
新手上路
积分 6
发帖 2
注册 2006-10-24 02:51
UID 67951
性别 男
状态 离线
我们公司有一个软件安装好后需要添加环境变量才能运行,因为数量太多,有点烦人,想写一个自动完成系统环境变量添加的脚本,有人会吗?
2 发表于 2006-10-24 22:38 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
2003/Vista下倒是有个 setx ,在XP下只能通过reg/regedit改注册表了。

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
3 发表于 2006-10-25 08:03 ·  中国 江苏 无锡 联通
新手上路
积分 6
发帖 2
注册 2006-10-24 02:51
UID 67951
性别 男
状态 离线
这样啊!谢谢哦!看来老兄们已将享受上新的操作系统了!
4 发表于 2006-10-25 08:11 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

set path="c:\windows\help";%path%

  其中"c:\windows\help"只是个示范,可以把很多路径加到里面,不过别忘了中间加上";"分隔每个路径。这样不能永久的设置环境变量,只能临时用一下。要使设置的环境变量长期有效,只有手工改一下系统环境变量了,或者修改注册表。
5 发表于 2006-10-25 08:52 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
数量太多?? 路径很多吗?
6 发表于 2006-10-25 09:26 ·  中国 福建 泉州 石狮市 电信
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
UID 586
性别 男
来自 福建泉州
状态 离线
使用VBS

dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")
wsh.Environment("system").Item("<变量名>")="<值>"

或使用使用REG

set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
::系统环境变量
::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
::用户环境变量
::HKEY_CURRENT_USER\Environment
reg add "%regpath%" /v "<name>" /d "<data>"

将上面的<>内容替成你需要定义的名称和值就可以了.
QQ:366840202
http://chenall.net
7 发表于 2006-12-27 08:25 ·  中国 北京 光环新网
新手上路
积分 12
发帖 5
注册 2006-12-27 08:04
UID 74686
性别 男
状态 离线
如果我要给path设置值,怎么用reg add 加啊?  就是不改变path原有的值,加上我需要的值。
能写下具体怎么做么?
万分感谢!!
8 发表于 2006-12-27 21:24 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
UID 62249
状态 离线
path在注册表中为二进制表示,不是很好操作。
9 发表于 2006-12-27 21:49 ·  中国 北京 光环新网
新手上路
积分 12
发帖 5
注册 2006-12-27 08:04
UID 74686
性别 男
状态 离线
没有那么麻烦吧,就是象6楼说的,用:
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
reg add "%regpath%" /v "Path" /d "<data>"

但是这样会覆盖Path原来的值。
我试了试这样写:
set  regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set  Path=<data>;%Path%
reg add "%regpath%" /v "Path" /d "%Path%"

但是出现 error : too many command-line .......

我的想法就是把原来的值倒出,修改后再导入,但是不熟悉dos命令。。。。
10 发表于 2006-12-27 22:16 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
UID 62249
状态 离线
我找到一个非常好的方法。就是利用AUTOEXEC.BAT中的SET PATH。这个原理我不是很清楚,但是已经试验成功,我也觉得很奇怪。据说WINNT都不使用AUTOEXEC.BAT了,但事实并非如此,大家做一个小实验,看你们的电脑上能否成功。
追加PATH路径而不覆盖原有路径:如果你系统盘没有AUTOEXEC.BAT,那么就建立一个,在里面追加内容SET PATH=D:\;E:\;F:\;G:\;
重新启动电脑,奇迹出现了,使用set path查看下你的PATH变量吧,居然把AUTOEXEC.BAT中设置的变量添加到了PATH变量中。真是奇怪.
11 发表于 2006-12-27 22:17 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
UID 62249
状态 离线
试验成功的跟帖,上面的路径可以改变成任何自己需要的路径,但必须注意每个路径后必须使用;来分开.
12 发表于 2006-12-27 22:23 ·  中国 北京 光环新网
新手上路
积分 12
发帖 5
注册 2006-12-27 08:04
UID 74686
性别 男
状态 离线
感谢hunrybecky, 但是真的无法通过修改注册表来添加Path吗? 
期待帮助。。。。。
13 发表于 2006-12-27 22:30 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
UID 62249
状态 离线
能够,我开始也想到通过注册表来添加,但是想到因为是使用的可扩展的字符(更改我开始说的是二进制,最后查得知是可扩展字符串,抱歉),导出注册表的是长串的数字,所以就放弃了,而意外的发现刚才哪个利用AUTOEXEC.BAT的方法.现在使用注册表的方法也已经成功,实际上可扩展字符也不影响,直接使用一般的REG_SZ就可以了.方法补如下:
@ECHO OFF
SET SE=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
REG ADD "%SE%" /V Path /t REG_EXPAND_SZ /d %PATH%G:\ACCESS; /f
@ECHO ON

注意的是%SPATH%G:\ACCESS;注意原来的变量与添加的之间没有;
14 发表于 2006-12-27 22:30 ·  中国 河南 许昌 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
XP应该是不会执行AUTOEXEC.BAT,却会解析AUTOEXEC.BAT中的一些变量,路径就是其中一个。
15 发表于 2006-12-27 22:33 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,179
发帖 442
注册 2006-09-09 22:47
UID 62249
状态 离线
Originally posted by zh159 at 2006-12-27 22:30:
XP应该是不会执行AUTOEXEC.BAT,却会解析AUTOEXEC.BAT中的一些变量,路径就是其中一个。



是的,从这个例子可以说明兄的观点,而且更有意思的是,AUTOEXEC.BAT中设置的变量是添加到现有的变量中而不是替代,所以利用这个东西,应该可以做很多有意思的事情了.
论坛跳转: