标题: [注册表类] [已解决]批处理怎样删除path变量? [打印本页]
作者: YLSWY 时间: 2021-9-26 16:40 标题: [已解决]批处理怎样删除path变量?
本帖最后由 YLSWY 于 2021-9-28 11:16 编辑
- @echo off&setlocal enabledelayedexpansion
-
-
- ::添加管理员权限
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
-
- ::设置路径
- if not "%OS%"=="Windows_NT" exit
- title WindosActive
-
- cd /D %~dp0
- cd ..
- set CSP_HOME=%cd%
-
- ::将path变量放入文本
-
- echo %path%>path.txt
- for /f "usebackq tokens=* delims=" %%h in (path.txt) do (
- set p=%%h
- set p=!p:;=^
-
- !
- echo !p!>path.txt
- )
-
- ::查询我所需要的变量
- for /f "eol=" %%g in ('findstr "\windows\tools" path.txt') do (
- set t=%%g
-
- setx /m Path "%PATH:!t!=%"
-
- )
- pause
复制代码
大佬们,请求一下帮助,为什么setx /m Path "%PATH:!t!=%"为什么不能修改呢,我自己输入完整的路径就可以设置为空呢,使用setx /m Path "%PATH%;!t!"添加变量却没有问题,
作者: 380333722 时间: 2021-9-27 09:23
本帖最后由 380333722 于 2021-9-27 09:27 编辑
::查询我所需要的变量
for /f "eol=" %%g in ('findstr "\windows\tools" path.txt') do (
set t=%%g
setx /m Path "%PATH:!t!=%"
)
在循环中使用变量延迟,还要做替换,是无法实现的,所以需要用 call 来实现。
::查询我所需要的变量
for /f "eol=" %%g in ('findstr "\windows\tools" path.txt') do (call :sub %%g)
goto :eof
:sub
set t=%1
setx /m Path "!PATH:%t%=!"
作者: YLSWY 时间: 2021-9-28 11:11
回复 2# 380333722
感谢大佬,可以了,不过我换了一种方式,用注册表去修改了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |