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

问题描述 投票:0回答:3

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

echo %Path%

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

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

有人知道如何从命令行查看这些吗?如果系统变量已经回答了这个问题,请指出那个方向。

编辑:我正在运行一行检查变量是否存在,如果不存在,我将 Path 的值重置为所有旧变量,加上新变量。我只需要系统变量,不需要其他变量,因为当我存储当前变量和新变量时,我不想附加任何其他不应该属于我的系统环境变量的变量。

例如如果我要使用

echo %Path%
set %Path%
我可能会在我的系统变量中存储局部变量。我宁愿不那样做。

windows batch-file cmd path
3个回答
5
投票

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

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 ""

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

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 ""

4
投票

您可以为此使用 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

0
投票

如果我们使用powershell,有一种方法。可以这样做(欢迎更正,但这应该是相当准确的)。注意 - 您需要在管理员窗口中使用它:

  1. 捕获当前系统路径到一个文件中(我称之为 syspath)

    powershell "[System.Environment]::GetEnvironmentVariable('PATH',[System.EnvironmentVariableTarget]::Machine)" >syspath

  2. 获取系统路径到变量中

    设置/pv=

  3. 从当前系统路径创建新路径

    set new_script_loc=C: 手稿

    set newpath="%new_script_loc%;%v%"

    powershell “[System.Environment]::SetEnvironmentVariable('PATH','%newpath%',[System.EnvironmentVariableTarget]::Machine)”

© www.soinside.com 2019 - 2024. All rights reserved.