echo %PATH%
अपने (मशीन स्तर) %path%
एक अनुगामी \
रिवर्स सोलिडस (बैकस्लैश) के साथ समाप्त होता है, तो आप इसे दोगुना करना चाहिए इस प्रकार है:
if "%path:~-1%"=="\" (
SETX PATH "%PATH%\"
) else (
SETX PATH "%PATH%"
)
संसाधन: Syntax : Escape Characters, Delimiters and Quotes (मेरे अपने मुख्य आकर्षण में ध्यान दें निम्नलिखित उद्धरण):
Some commands (e.g. REG
and FINDSTR
) use the standard escape character of \
(as used by C, Python, SQL, bash and many other languages.) The \
escape can cause problems with quoted directory paths that contain a trailing backslash because the closing quote "
at the end of the line will be escaped \"
.
To save a directory path with a trailing backslash (\
) requires adding a second backslash to 'escape the escape' so for example instead of "C:\My Docs\"
use "C:\My Docs\\"
पिछलापर बयान के ऊपर बयानSETX
पर भी लागू होता है। यहाँ एक उदाहरण है:
==>set myPath
myPath=D:\Program Files\OgreSDK\
==>setx myOgre "%myPath%"
SUCCESS: Specified value was saved.
==>reg query HKEY_CURRENT_USER\Environment /v myOgre
HKEY_CURRENT_USER\Environment
myOgre REG_SZ D:\Program Files\OgreSDK"
==>setx myOgre "%myPath%\"
SUCCESS: Specified value was saved.
==>reg query HKEY_CURRENT_USER\Environment /v myOgre
HKEY_CURRENT_USER\Environment
myOgre REG_SZ D:\Program Files\OgreSDK\
==>
Invalid syntax
त्रुटि टूट करने के लिए पहले उपयोगकर्ता स्तर वातावरण चर के रूप में SETX PATH "%PATH%"
का उपयोग करते हुए की वजह से उपयोगकर्ता स्तर %PATH%
चर संबंधित है मशीन स्तर एक पर पूर्वता लेता है।समस्या को हल करने के लिए, उपयोगकर्ता के स्तर को समायोजित %PATH%
चर (या बिल्कुल यह निकालने के लिए) पहले via Windows GUI (preferred):
Control Panel | System | Advanced | Environment Variables
प्रमाण - दो चरणों में समस्या पुन: पेश:
चरण # 1: के साथ शुरू अच्छा %myPath%
पिछला \
के साथ मशीन स्तर पर परिवर्तनीय; आखिरकार (ठीक में) इस उपयोगकर्ता को वर्तमान उपयोगकर्ता स्तर और exit
cmd
सत्र के लिए तोड़ दिया।
==>set myPath
myPath=D:\temp\foo foo\
==>reg query HKEY_CURRENT_USER\Environment /v myPath
ERROR: The system was unable to find the specified registry key or value.
==>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v myPath
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
myPath REG_SZ D:\temp\foo foo\
==>setx myPath "%myPath%;D:\temp\bu bu bu"
SUCCESS: Specified value was saved.
==>reg query HKEY_CURRENT_USER\Environment /v myPath
HKEY_CURRENT_USER\Environment
myPath REG_SZ D:\temp\foo foo\;D:\temp\bu bu bu
==>rem fetch erroneous state
==>setx myPath "%myPath%"
SUCCESS: Specified value was saved.
==>reg query HKEY_CURRENT_USER\Environment /v myPath
HKEY_CURRENT_USER\Environment
myPath REG_SZ D:\temp\foo foo"
==>exit
चरण # 2: एक नया cmd
सत्र में, "
पूर्ण विराम वाले उपयोगकर्ता स्तर पर टूटा %myPath%
चर के साथ शुरू; यह प्रश्न में वर्णित त्रुटि उठाता है।
==>set myPath
myPath=D:\temp\foo foo"
==>reg query HKEY_CURRENT_USER\Environment /v myPath
HKEY_CURRENT_USER\Environment
myPath REG_SZ D:\temp\foo foo"
==>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v myPath
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
myPath REG_SZ D:\temp\foo foo\
==>setx myPath "%myPath%;D:\temp\bu bu bu"
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.
==>reg query HKEY_CURRENT_USER\Environment /v myPath
HKEY_CURRENT_USER\Environment
myPath REG_SZ D:\temp\foo foo"
==>
वास्तव में, मुझे यकीन है कि यह एक 'के साथ समाप्त होता हूँ, तो साथ', अगर नहीं फ़ोल्डर नाम का अंत, लेकिन निश्चित रूप से \ के साथ नहीं। साथ ही, लेखन के समय, उपयोगकर्ता स्तर पर 'पथ' चर मौजूद नहीं था। – octopod