Board logo

标题: [其他] 批处理命令setx设置系统变量 [打印本页]

作者: wc726842270    时间: 2011-3-11 12:49     标题: 批处理命令setx设置系统变量

注:Win7、Win10、Win11等系统已经默认自带setx命令,不需要下载第三方工具。

刚才弄了一下系统变量。除了WMI脚本和WMIC的方法外,还有个第三方命令,那就是SETX。费话不多说进入正题
以下是自己断的句,如果感觉不对请参考原文
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/soli/archive/2007/09/03/1770771.aspx
  1. Setx在本地或系统环境中设置环境变量,无需编写程序或制作脚本。Setx 还检索注册表项并将其写入到文本文件。语法
  2. setx [/s Computer [/u [Domain\]User [/p [Password]]]] Variable Value [/m]setx [/s Computer [/u [Domain\]User [/p [Password]]]] [Variable] /k Path [/m]setx [/s Computer [/u [Domain\]User [/p [Password]]]] /f FileName {[Variable] {/a X,y | /r X,y "String"} [/m] | /x} [/d Delimiters]
  3. 参数
  4. /s Computer 指定远程计算机名称或 IP 地址(不能使用反斜杠)。该默认值是本地计算机。此参数适用于在命令中指定的所有文件和文件夹。
  5. /u [Domain\]User 使用特定用户帐户的权限运行脚本。该默认值是系统权限。
  6. /p [Password] 指出 /u 参数中指定的用户帐户的密码。 Variable 指定要设置的环境变量的名称。 Value 指定要将环境变量设置到的值。
  7. /k Path 指定根据来自注册表项的信息设置变量。指定 Path,格式为 \HIVE\KEY\...\Value(例如,HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName)。
  8. /f FileName 指定要使用的文件。
  9. /a X,y 指定绝对坐标和偏移量作为搜索参数。
  10. /r X,y "String" 指定来自 String 的相对坐标和偏移量作为搜索参数。
  11. /m 指定设置系统环境中的 Variable。默认值是本地环境。
  12. /x 显示文件坐标。忽略 /a、/r 和 /d 命令行选项。
  13. /d Delimiters 指定附加的分隔符,例如,"," 或 "\"。四个内置的分隔符为空格、跳格键、回车和换行符。可使用任何 ASCII 字符作为附加的分隔符。分隔符的最大值为 15,包括四个内置的分隔符。
  14. /? 在命令提示符下显示帮助。
  15. 注释使用 /s、/u 和 /p 命令行选项
  16. 只有在使用 /s 命令行选项时才可使用 /u 和 /p 选项。必须同时使用 /p 和 /u 才能提供用户密码。 Setx 提供仅用于命令行或编程的方式直接且永久地设置系统环境值。系统环境变量可通过“控制面板”或通过注册表编辑器 (Regedit.exe) 手动配置。Set 命令为命令解释程序(即,Cmd.exe)的内部命令,仅为当前控制台窗口设置用户环境变量.
  17. 可使用 setx 为来自以下三种来源之一的用户和系统环境变量设置值:命令行模式、注册表模式或文件模式。 Setx 类似于 UNIX 实用程序 SETENV。
  18. Setx 将变量写入到注册表中的主环境。用 setx 设置的变量仅在未来的命令窗口中可用,而不是在当前的命令窗口。
  19. 只支持 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 配置单元。REG_DWORD、REG_EXPAND_SZ、REG_SZ AND REG_MULTI_SZ 是有效的 RegKey 数据类型。
  20. 当在注册表中获得对 REG_MULTI_SZ 值的访问权时,只有第一项被展开和使用。
  21. 无法使用 setx 删除添加到本地或系统环境中的值。可以使用带有变量名但不带值的 set 来删除本地环境中相应的值。
  22. REG_DWORD 注册表值将以十六进制的模式展开并使用。
  23. 文件模式仅支持对 CR-LF 文本文件的解析。
  24. 示例
  25. 要在本地环境中设置 MACHINE 环境变量为 Brand1,请键入:
  26. setx MACHINE brand1
  27. 要在系统环境中设置 MACHINE 环境变量为 Brand1 Computer,请键入:
  28. setx MACHINE "brand1 computer" /m
  29. 要在本地环境中设置 MYPATH 环境变量以使用在 PATH 环境变量中定义的搜索路径,请键入:
  30. setx MYPATH %PATH%
  31. 要在本地环境中设置 MYPATH 环境变量以便在将 ~ 替换为 % 后使用在 PATH 环境变量中定义的搜索路径,请键入:
  32. setx MYPATH ~PATH~
  33. 要在一台名为 Computer1 的计算机上的本地环境中设置 MACHINE 环境变量为 BRAND1,请键入:
  34. setx /s computer1 /u maindom\hiropln /p p@ssW23 MACHINE BRAND1
  35. 要在一台名为 Computer1 的计算机上的本地环境中设置 MYPATH 环境变量以便使用在 PATH 环境变量中定义的搜索路径,请键入:
  36. setx /s computer1 /u maindom\hiropln /p p@ssW23 MYPATH %PATH%
  37. 要在本地环境中将 TZONE 环境变量设置为在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName 注册表项中找到的值,请键入:
  38. setx TZONE /k HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName
  39. 要在系统环境中将 BUILD 环境变量设置为在 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber 注册表项中找到的值,请键入:
  40. setx BUILD /k "HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber" /m
  41. 要在一台名为 Computer1 的计算机上的本地环境中将 TZONE 环境变量设置为HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName 注册表项中找到的值,请键入:
  42. setx /s computer1 /u maindom\hiropln /p p@ssW23 TZONE /k HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName
  43. 要在一台名为 Computer1 的计算机上的系统环境中将 BUILD 环境变量设置为在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber 注册表项中找到的值,请键入:
  44. setx /s computer1 /u maindom\hiropln /p p@ssW23 BUILD /k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber" /m
  45. 要显示文件 ipconfig.out 的内容及其相应的坐标,请键入:
  46. setx /f ipconfig.out /x
  47. 要在本地环境中将 IPADDR 环境变量设置为在文件 ipconfig.out 中 5,11 坐标处找到的值,请键入:
  48. setx IPADDR /f ipconfig.out /a 5,11要在本地环境中将 OCTET1 环境变量设置为在带有分隔符“#$*.”的文件 ipconfig.out 中 5,3 坐标处找到的值,请键入:
  49. setx OCTET1 /f ipconfig.out /a 5,3 /d "#$*."
  50. 要在本地环境中将 IPGATEWAY 环境变量设置为在文件 ipconfig.out 中相对于“Gateway”坐标为 0,7 的坐标处找到的值,请键入:
  51. setx IPGATEWAY /f ipconfig.out /r 0,7 Gateway
  52. 要显示一台名为 Computer1 的计算机上的文件 ipconfig.out 的内容及其相应的坐标,请键入:
  53. setx /s computer1 /u maindom\hiropln /p p@ssW23 /f ipconfig.out /x
复制代码
改动后重新开启CMD,再进行调试(原因没研究,不过应该和原理有关吧)

http://bcn.bathome.net/s/tool/index.html?key=setx
作者: wc726842270    时间: 2011-3-11 12:52

以上本人只试了几个,如果对注册表不熟悉,请慎重使用注册表
作者: Batcher    时间: 2011-3-11 19:52

跟setx在一起的还有很多:
http://bbs.bathome.net/thread-9611-1-4.html

X系列的也有很多:
http://bbs.bathome.net/thread-1855-1-4.html
作者: gudou    时间: 2012-10-23 18:24

可以理解为从注册表读取值再赋值给变量么……怎么试了无效?
setx TZONE /k "HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\CurrentBuildNumber" /m
作者: zhaoyuan863    时间: 2014-1-14 21:21

其实我只是想用一下,类似于此类命令:
set path=%path%;mypath
只是SET只是临时当前窗口,所以.....




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2