我在多个堆栈溢出帖子中看到 LOCAL 路径变量可以通过使用看到:
echo %Path%
但我想查看在 (Windows 10) 中找到的我的SYSTEM 路径变量:
控制面板>系统和安全>系统>高级系统设置>环境变量...>系统变量
有人知道如何从命令行查看这些吗?如果系统变量已经回答了这个问题,请指出那个方向。
编辑:我正在运行一行检查变量是否存在,如果不存在,我将 Path 的值重置为所有旧变量,加上新变量。我只需要系统变量,不需要其他变量,因为当我存储当前变量和新变量时,我不想附加任何其他不应该属于我的系统环境变量的变量。
例如如果我要使用
echo %Path%
或 set %Path%
我可能会在我的系统变量中存储局部变量。我宁愿不那样做。
这列出了四种类型的变量。在控制台中使用
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 ""
您可以为此使用 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
如果我们使用powershell,有一种方法。可以这样做(欢迎更正,但这应该是相当准确的)。注意 - 您需要在管理员窗口中使用它:
捕获当前系统路径到一个文件中(我称之为 syspath)
powershell "[System.Environment]::GetEnvironmentVariable('PATH',[System.EnvironmentVariableTarget]::Machine)" >syspath
获取系统路径到变量中
设置/pv=
从当前系统路径创建新路径
set new_script_loc=C: 手稿
set newpath="%new_script_loc%;%v%"
powershell “[System.Environment]::SetEnvironmentVariable('PATH','%newpath%',[System.EnvironmentVariableTarget]::Machine)”