这里的分离路径(可能)由REG查询返回的另一种方式,独立于Windows版本:
- 更换只能保证单词的查询结果,
REG_SZ
,具有独特的单个字符,例如?
。 (见后面的注释)
- 然后使用独特的单字符,如果找到了,如果有的话在2个令牌拆分查询结果并只获得第二届一个。
- 最后,修剪此类标记左侧的制表符和空格以获取路径。
注: 问号实际上可能是一个路径的一部分,尽管这似乎是不寻常的。理想情况下,应该是不允许的路径字符:|
,<
,>
,等等。但其中一些给了我们麻烦逃脱他们。
检查时还有与原代码的另一个问题,:
if exist %PYTHONINSTALL%\whatever goto :EOF
正在检查的路径应包含在双引号,考虑到含空格的路径。
因此,总而言之,这是另一种实现方式,例如,只是为了HKML部分:
rem Try HKLM
SET QueryResult=
FOR /F "usebackq delims=" %%r IN (`%reg% QUERY HKLM\%key% /ve 2^>NUL`) DO @SET QueryResult=%%r
SET ReplacedResult=%QueryResult:REG_SZ=?%
FOR /F "tokens=2 delims=?" %%t IN ("%ReplacedResult%") DO SET "%~1=%%t"
rem trim tabs and spaces from the left (note: there's a literal tab in next line)
FOR /F "tokens=* delims= " %%v IN ("%PYTHONINSTALL%") DO SET PYTHONINSTALL=%%v
if exist "%PYTHONINSTALL%\python.exe" goto :EOF
rem It may be a 32bit Python directory built from source, in which case the
rem executable is in the PCBuild directory.
if exist "%PYTHONINSTALL%\PCBuild\python.exe" (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild" & goto :EOF)
rem Or maybe a 64bit build directory.
if exist "%PYTHONINSTALL%\PCBuild\amd64\python.exe" (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild\amd64" & goto :EOF)
请看看this Github commit看到实际的差异。
@Krispcheez,我仍然得到同样的错误,你是如何配置你的PATH变量,实际上指向python? –
我没得 – Krispycheez
@RicoPlasakoi,看看你是否修改activate.bat并添加你所得到的回声%PYTHONINSTALL%后,每一个“设置PYTHONINSTALL =%PYTHONINSTALL:=%”的CheckPython – Krispycheez