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
实际上是这样做的这将留下两个相邻的分隔符返回路径中的code>,对吗?如果要阻止它这样做,只需将第三行更改为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