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

rjjhvcjd  于 2023-04-22  发布在  Windows
关注(0)|答案(3)|浏览(246)

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

echo %Path%

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

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

有人知道如何从命令行查看这些吗?如果这个问题已经在系统变量中得到了回答,请向我指出这个方向。
编辑:我运行了一行代码来检查一个变量是否存在,如果不存在,我将把Path的值重置为所有的旧变量和新变量。我只需要系统变量,不需要其他变量,因为当我存储我的当前变量和新变量时,我不希望附加任何不应该属于我的系统环境变量的其他变量。
例如,如果我使用echo %Path%set %Path%,我可能会在系统变量中存储局部变量。我宁愿不这样做。

ldfqzlk8

ldfqzlk81#

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

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

m1m5dgzv2#

你可以使用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
bfnvny8b

bfnvny8b3#

如果我们使用PowerShell,有一种方法。可以这样做。(欢迎更正,但这应该是相当准确的。)

**注意:**需要在管理员窗口使用。

1.将当前系统路径捕获到一个类似syspath的文件中。

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

1.将系统路径放入变量中。

set /p v=<syspath

1.从当前syspath创建新路径。

set new_script_loc=C:\newscripts
set newpath="%new_script_loc%;%v%"
powershell "[System.Environment]::SetEnvironmentVariable('PATH','%newpath%',[System.EnvironmentVariableTarget]::Machine)"

相关问题