如何在命令提示符中查看我的SYSTEM环境变量?

时间:2016-06-08 21:20:52

标签: windows batch-file cmd path

我在多个堆栈溢出帖子中看到 LOCAL 路径变量可以通过以下方式看到:

echo %Path%

但我想查看(Windows 10)中找到的 SYSTEM 路径变量:

控制面板>系统和安全性>系统>高级系统设置>环境变量...>系统变量

有谁知道如何从命令行查看这些内容?如果已经回答了系统变量,请指出我的方向。

编辑:我正在运行一条线来检查变量是否存在,如果它不存在,我正在重置所有旧变量的Path值,再加上新变量。我只需要系统变量而不需要其他变量,因为当我存储当前变量和新变量时,我不希望附加任何其他变量,这些变量不属于我的系统环境变量。

e.x。如果我使用echo %Path%set %Path%我可能会在我的系统变量中存储局部变量。我宁愿不这样做。

2 个答案:

答案 0 :(得分:3)

这列出了四种类型的变量。在控制台中使用

cscript //nologo C:\pathto\script.vbs

请注意,有些变量未列出,这些变量列在set的帮助中 - 类型set /?

Set WshShell = CreateObject("WScript.Shell")


Set wshsysEnv = WshShell.Environment("SYSTEM")
Wscript.echo "System"
For Each S In wshsysEnv
    WScript.echo S 
Next
Wscript.echo ""

Set wshsysEnv = WshShell.Environment("Volatile")
Wscript.echo "Volatile"
For Each S In wshsysEnv
    WScript.echo S 
Next
Wscript.echo ""

Set wshsysEnv = WshShell.Environment("User")
Wscript.echo "User"
For Each S In wshsysEnv
    WScript.echo S 
Next
Wscript.echo ""

Set wshsysEnv = WshShell.Environment("Process")
Wscript.echo "Process"
For Each S In wshsysEnv
    WScript.echo S 
Next
Wscript.echo ""

获取两条路径(新安装的窗口上的用户路径为空,但软件可能会更改)

Set wshsysEnv = WshShell.Environment("User")
Wscript.echo "User"
For Each S In wshsysEnv
    If lcase(left(S,5)) = LCase("PATH=") then WScript.echo S 
Next
Wscript.echo ""

Set wshsysEnv = WshShell.Environment("System")
Wscript.echo "System"
For Each S In wshsysEnv
    If lcase(left(S,5)) = LCase("PATH=") then WScript.echo S 
Next
Wscript.echo ""

只获取没有" Path ="的系统路径在开始时,使用此

Set WshShell = CreateObject("WScript.Shell")

Set wshsysEnv = WshShell.Environment("System")
For Each S In wshsysEnv
    If lcase(left(S,5)) = LCase("PATH=") then WScript.echo right(S,Len(S)-5)
Next
Wscript.echo ""

答案 1 :(得分:3)

您可以使用reg.exe。 只显示所有系统路径:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path

当你想在一行显示每条路径时,这里只是一小部分:

@echo off
setlocal
for /f "tokens=2* delims= " %%d in ('REG query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH 2^>nul') do (
  set "_REMAIN_=%%~e"
  call :Sub1
)
exit /b 0

:Sub1
for /f "tokens=1* delims=;" %%d in ("%_REMAIN_%") do (
  echo %%~d
  set "_REMAIN_=%%~e"
  if not "%%~e"=="" call :Sub1
)
exit /b 0