Batch file 从系统中删除路径';批处理脚本中的路径

Batch file 从系统中删除路径';批处理脚本中的路径,batch-file,cmd,Batch File,Cmd,我试图从批处理脚本中的系统的路径环境变量中删除变量路径 例如,如果MY_DIR=C:\MyDir,我想从PATH中删除MY_DIR 我试过了 setlocal EnableDelayedExpansion call setx /M PATH %%PATH:%MY_DIR%=%% 但它失败,并显示以下错误消息: ERROR: Invalid syntax. Default option is not allowed more than '2' time(s). 有什么想法吗 谢谢 @echo

我试图从批处理脚本中的系统的
路径
环境变量中删除变量路径

例如,如果
MY_DIR=C:\MyDir
,我想从
PATH
中删除
MY_DIR

我试过了

setlocal EnableDelayedExpansion
call setx /M PATH %%PATH:%MY_DIR%=%%
但它失败,并显示以下错误消息:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
有什么想法吗

谢谢

@echo off

setlocal enableDelayedExpansion
set "_path="
for %%# in ("%path:;=";"%") do (
    echo %%#
  if /i "%%~#" neq  "C:\Docker" (
    set "_path=!_path!;%%~#"
  )
)

set "path=%_path%"
echo %path%
endlocal
虽然只进行了部分测试,但仍应做到这一点

编辑:经过一些测试,结果是

 @echo off
 setlocal enabledelayedexpansion
 set newpath=!path:%MY_DIR%=!
 set newpath=%newpath:;;=;%
 setx path %newpath% >nul

实际上是这样做的

这将留下两个相邻的分隔符
,对吗?如果要阻止它这样做,只需将第三行更改为
set newpath=!路径:%MY_DIR%;=
,所以
在MY_DIR之后将被删除…但前提是
%MY_DIR%
不是
%PATH%
的最后一部分;我宁愿替换
编写在单独的步骤中,因此插入
设置新路径=%newpath:;;=;%在第3行和第4行之间…我仍然得到“错误:无效语法”。默认选项不允许超过“2”个时间。”:(好的,删除第四行中的
/M
对我来说是有效的,我将编辑/更新我的帖子,上面讨论的更改不起作用。似乎根本不会更改路径:(谢谢,但这不会更改系统的
路径
。它只会在本地更改
路径
。请注意,我们应该使用
setx/M
来设置系统环境变量。
 @echo off
 setlocal enabledelayedexpansion
 set newpath=!path:%MY_DIR%=!
 set newpath=%newpath:;;=;%
 setx path %newpath% >nul