我在多个堆栈溢出帖子中看到 LOCAL 路径变量可以通过以下方式看到:
echo %Path%
但我想查看(Windows 10)中找到的 SYSTEM 路径变量:
控制面板>系统和安全性>系统>高级系统设置>环境变量...>系统变量
有谁知道如何从命令行查看这些内容?如果已经回答了系统变量,请指出我的方向。
编辑:我正在运行一条线来检查变量是否存在,如果它不存在,我正在重置所有旧变量的Path值,再加上新变量。我只需要系统变量而不需要其他变量,因为当我存储当前变量和新变量时,我不希望附加任何其他变量,这些变量不属于我的系统环境变量。
e.x。如果我使用echo %Path%
或set %Path%
我可能会在我的系统变量中存储局部变量。我宁愿不这样做。
答案 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