[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 批处理命令find查找长字符找不到结果

大家好,我修改了网上的一个批处理文件,先判断系统变量中有没有python,如果没有就添加,但是echo %PathAll_%| find /i "%Path_%"这一句总是出问题,但是如果我把Path_=C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\; 改成Path_=C:\Program Files (x86)\Python37-32\Scripts\就没有问题,请问,问题出在什么地方?
  1. @echo off   
  2. @set Path_=C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;   
  3. for,/f,"tokens=1,2,*",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(@set PathAll_=%%c)   
  4. echo %PathAll_%| find /i "%Path_%" && set IsNull=true|| set IsNull=false
  5. echo %IsNull%
  6. if not %IsNull%==true (
  7. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%PathAll_%;%Path_%" /f    )
  8. pause
复制代码

先检查下 %PathAll_%

TOP

回复 2# newswan
下面是PathAll_的内容
C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\dotnet\
单独查找C:\Program Files (x86)\Python37-32\Scripts\没有问题,单独查找C:\Program Files (x86)\Python37-32\也没有问题,但是查找C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;结果就不正确。

TOP

本帖最后由 newswan 于 2021-4-15 11:35 编辑

回复 3# pujizhongxue
  1. set "p=C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\dotnet\"
  2. set "p1=C:\Program Files (x86)\Python37-32\Scripts\"
  3. set "p2=C:\Program Files (x86)\Python37-32\"
  4. set "p3=C:\Program Files (x86)\Python37-32\Scripts\;C:\Program Files (x86)\Python37-32\;"
  5. echo "%p%" | find "%p1%" && set IsNull=true || set IsNull=false
  6. echo %IsNull%
  7. echo "%p%" | find "%p2%" && set IsNull=true || set IsNull=false
  8. echo %IsNull%
  9. echo "%p%" | find "%p3%" && set IsNull=true || set IsNull=false
  10. echo %IsNull%
复制代码
没有问题

用 echo on 检查命令行

TOP

本帖最后由 went 于 2021-4-15 12:19 编辑

一键添加环境变量,ANSI编码
  1. @echo off
  2. REM 管理员权限
  3. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  4. REM 要添加的环境变量列表 set "addPath="路径1";"路径2";"
  5. set "addPath="C:\Program Files (x86)\Python37-32\Scripts";"C:\Program Files (x86)\Python37-32";"F:\Phone\tool""
  6. set "newPath="
  7. for %%i in (%addPath%) do (
  8. echo "%PATH%" | findstr /i /C:";%%~i" >nul 2>nul && (
  9. echo %%~i 环境变量已存在
  10. ) || (
  11. echo %%~i 环境变量不存在
  12. call set "newPath=%%newPath%%;%%~i"
  13. )
  14. echo ----------------------
  15. )
  16. if not "%newPath%"=="" (
  17. echo.
  18. echo 正在追加环境变量: "%newPath%"
  19. setx "PATH" "%PATH%%newPath%"
  20. )
  21. pause&exit
复制代码

TOP

返回列表