Comment régler% PATH% Dans une variable système ou une variable utilisateur dans la ligne de commande de manière continue?

Quand tu ouvres sysdm.cpl -> Advanced -> Environment Variables. Tu peux voir ça env divisé en deux sections:

une

User Variables

, autre

System Variables

, Ils ont tous les deux une variable

PATH

en eux.

Maintenant si vous courez

set

à l'intérieur

cmd

Astuce, il ne montre qu'une seule variable nom nommée

PATH

Et il contient la combinaison de ce qui précède.

Comment puis-je être clairement installer

System Variable

ou

User Variable

Dans la ligne de commande constamment?
Invité:

Giselle

Confirmation de:

Lire et regarder
http://stackoverflow.com/a/31889785/3439404
sur une question similaire dans StackOverflow:
http://stackoverflow.com/questions/31885906
.

Ci-dessous est un script batch / cmd, que j'ai écrit précédemment.

le reçu

catalogues dans la mine

%PATH%

ainsi que dans les valeurs de registre correspondantes dans

HKLM

et

HKCU

. Le script n'enregistre rien dans le registre; Il montre simplement une autre approche possible d'une telle tâche.

Dans une fête propre / cmd

Et cela montre que sa décision ne peut pas être triviale.

Utilisant:


testpath.bat

(sans paramètre):

Chek.


%PATH%

syntaxe variable;

Prime

: Montre l'excès

Doubles B.

%PATH%

variable

;


testpath.bat dir

(Remarque

littéral

paramètre

DIR

): Affiche une liste de fichiers exécutables (Comme défini dans

PATHEXT

variable) Pour chaque catalogue spécifique dans

%PATH%

;

Prime

: Montre l'excès I.

Catalogues inutiles B.

%PATH%

variable

:

@ECHO OFF
SETLOCAL enableextensions enabledelayedexpansion
echo --- %date% %time% %~nx0 %*
if /I "%~1" EQU "dir" (
set path
Call :printPath path "" dir
ENDLOCAL
goto :eof
)

set pathext

Call :duplicity pathext

Call :printPath path ""

rem debugging set "wrongpath=%path%;%SystemRoot%\\"
rem debugging Call :duplicity wrongpath

Call :duplicity path

set "HKCU_type="
set "HKCU_path="
for /F "tokens=2*" %%G in (
'reg query HKCU\Environment /v Path 2^>NUL ^|findstr /I "path"'
) do (
set "HKCU_type=%%G"
set "HKCU_path=%%H"
)
Call :printPath HKCU_path %HKCU_type%
if /I "%HKCU_type%"=="REG_EXPAND_SZ" Call :printPath HKCU_path %HKCU_type% Expanded

set "HKLM_type="
set "HKLM_path="
set "qqqq=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
for /F "tokens=2*" %%G in ('reg query "%qqqq%" /v Path^|findstr /I "path"'
) do (
set "HKLM_type=%%G"
set "HKLM_path=%%H"
)
Call :printPath HKLM_path %HKLM_type%
if /I "%HKLM_type%"=="REG_EXPAND_SZ" Call :printPath HKLM_path %HKLM_type% Expanded

:dirOnly
Call :deflatePath HKLM_path %HKLM_type%
rem echo "!NewPath:%%=%%%%!"

pause
set HK
ENDLOCAL&call set "NewPath=%NewPath%"
goto :eof

:printPath
echo(
echo %~0 %~1 %~2 %~3
if "!%~1!" NEQ "" (
set "ggg="!%~1:;=" "!""
rem set "ggg=!ggg:\"="!"
for %%G in (!ggg!) do (
if /I "%~3" NEQ "expanded" (
if /I "%~3" EQU "dir" (
echo(
echo %~0 %~1 %~2 %%~G
set "_partpath=%%~G"
if /I "!_partpath:%SystemRoot%=!" EQU "%%~G" (
dir /B /A:-D "%%~G" | findstr /I "%pathext:;=$ %$"
rem timeout /T 3 /NOBREAK >NUL
) else (
echo %~0 %~1 %~2 System default
)
) else (
echo %%~G
)
) else (
call echo %%~G
)
)
echo(
echo tested using next findstr regex:
echo "%pathext:;=$ %$"
)
goto :eof

:duplicity
echo(
echo %~0 %~1 %~2
set /A "ii=0"
set "ggg="!%~1:;=" "!""
set "ggg=!ggg:\"="!"
for %%G in (!ggg!) do (
set /A "ii+=1"
set /A "jj=0"
for %%g in (!ggg!) do (
set /A "jj+=1"
if /I "%%~G"=="%%~g" if !ii! LSS !jj! echo !ii!, !jj!: %%~g
)
)
goto :eof

:deflatePath
echo(
echo %~0 %~1 %~2
set "ggg="!%~1:;=" "!""
rem set "ggg=!ggg:\"="!"
set "NewPath="
for %%G in (!ggg!) do (
set "item=%%~G"
set "meti="
call :deflateItem "ProgramFiles(x86)"
if defined meti (
rem echo # !item!
) else (
call :deflateItem "ProgramFiles"
if defined meti (
rem echo # !item!
) else (
call :deflateItem "SystemRoot"
if defined meti (
rem echo # !item!
) else (
rem echo = !item:%%=%%%%!
)
)
)
if defined NewPath (
set "NewPath=!NewPath!;!item!"
) else (
set "NewPath=!item!"
)
)
echo !NewPath!
rem reg delete HKCU\Environment /v NewPath /f
rem setx NewPath "!NewPath!"
rem WARNING: The data being saved is truncated to 1024 characters.
rem reg query HKCU\Environment /v NewPath|findstr /I "NewPath"
goto :eof

:deflateItem
set "meti=!%~1!"
if "!meti!"=="!item!" (
set "item=%%%~1%%"
) else (
set "meti=!item:%meti%\=!"
if "!meti!" == "!item!" (
set "meti="
) else (
set "item=%%%~1%%\!meti!"
)
)
goto :eof

Pour répondre aux questions, connectez-vous ou registre