use*_*239 23 windows path batch-file
范围:Windows XP或更新的工具:批处理脚本
我需要能够从系统%PATH%变量中删除不需要的路径名.我知道如何使用诸如SETX.EXE之类的工具向系统%PATH%变量添加新路径名,这也使其在现有CMD环境中立即可用.这可能是使用FIND和/或某种FOR循环的问题,但我不太清楚如何实现这一点.这是一个示例路径声明......
%PATH% = C:\;C:\Program Files\Common Files\Java;C:\oracle\product\10.2.0\bin;C:\WINDOWS;C:\WINDOWS\system32;
Run Code Online (Sandbox Code Playgroud)
从这里,我需要能够删除与"oracle"相关的完整路径名.因此,在上面的示例中,我需要能够从上面的路径语句中删除"C:\ oracle\product\10.2.0\bin".不幸的是,oracle路径名称不仅可能与上面显示的不同,因此可能存在多个oracle路径名称,并且都需要删除.我试着在这里实施解决方案......
但是,它只是不起作用.该脚本将找不到路径名.任何帮助,将不胜感激.谢谢.
Jen*_*och 37
这C:\Program Files (x86)\Git\bin;
将从PATH字符串中删除子字符串并重新分配:
set PATH=%PATH:C:\Program Files (x86)\Git\bin;=%
Run Code Online (Sandbox Code Playgroud)
您可以使用它来查看更改:
echo %PATH:C:\Program Files (x86)\Git\bin;=% | tr ; \n
Run Code Online (Sandbox Code Playgroud)
注意:确切地说在子串上.它区分大小写且对斜线敏感.
如果您需要使用持久更改setx
而不是set
打开另一个控制台以使更改生效.
setx /M PATH "%PATH:C:\Program Files (x86)\Git\bin;=%"
Run Code Online (Sandbox Code Playgroud)
小智 8
@SachaDee我的路径有错误
C:\Program Files (x86)
Run Code Online (Sandbox Code Playgroud)
括号:
Program Files (x86)\Directory
给了我
目录was unexpected at this time.
(无论我何时尝试过)
我补充道
set $line=%$line:)=^^)%
Run Code Online (Sandbox Code Playgroud)
在for循环和之前
set $newpath=!$newpath:^^=!
Run Code Online (Sandbox Code Playgroud)
循环后(不确定是否有必要)
@echo off
setlocal EnableDelayedExpansion
set path
set $line=%path%
set $line=%$line: =#%
set $line=%$line:;= %
set $line=%$line:)=^^)%
for %%a in (%$line%) do echo %%a | find /i "oracle" || set $newpath=!$newpath!;%%a
set $newpath=!$newpath:#= !
set $newpath=!$newpath:^^=!
set path=!$newpath:~1!
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情:
@echo off&cls
setlocal EnableDelayedExpansion
set $line=%path%
set $line=%$line: =#%
set $line=%$line:;= %
for %%a in (%$line%) do echo %%a | find /i "oracle" || set $newpath=!$newpath!;%%a
set $newpath=!$newpath:#= !
echo set path=!$newpath:~1!
Run Code Online (Sandbox Code Playgroud)
我推echo
到了最后一行.检查结果,如果可以,请将其删除.
归档时间: |
|
查看次数: |
54557 次 |
最近记录: |