如何用批处理文件中的变量查找和替换 %PATH% 系统变量中的字符串?
How to find and replace a string in %PATH% system variable with variables in a batch file?
我正在尝试使用批处理文件升级 Java,我需要更改 PATH 系统变量以反映该更改。在 PATH 变量的开头我有
C:\Program Files\Java\jdk1.8.0_51;...
我需要将 jdk 值更改为 jdk1.8.0_60。我对命令行和批处理文件比较陌生,所以我可能误解了一些东西。这就是我正在尝试的。
我有几个变量
jVersion=1.8.0_
javaPath=C:\Program Files\Java
newVersion=60
oldVersion=51
我发现了一些关于用像这样的文字值替换字符串的方法
set PATH=%PATH:1.8.0_51=1.8.0_60%
但我无法让它与变量一起工作...
set PATH=%%PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%%%
我不知道你是需要 2% 的外围,还是只需要一个,或者 !'s。我对延迟扩张的知识不是很有信心。我也不知道可不可以。
作为奖励,我真的很希望能够将...\Java\ 之后的任何内容替换为我的新值。这只是为了以防万一我不知道 jdk
的 PATH 变量中的值
谢谢!
编辑:
通过在我的代码的修改版本之前使用命令 call
我能够让它工作
call set PATH=%PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%%
我仍在尝试弄清楚如何使其通用并将 ...\jdk
之后的任何内容更改为我拥有的值。
这不是您想要做的,但可能会解决问题。
创建一个名为 JAVA_HOME
的新环境变量,并让它指向您的 java 安装文件夹。从现在开始,改为操纵这个 JAVA_HOME
变量。您每次都可以用脚本替换它。
编辑您的 PATH
环境变量(仅一次),使其包含这个新的 JAVA_HOME
变量,如下所示 PATH=%JAVA_HOME%\bin;
我想你想要这个:
set PATH=C:\Program Files\Java\jdk1.8.0_60;%PATH%
如果您将新的 JDK 放在 当前 路径之前,OS 将使用新的 JDK。
但是您最好编辑 PATH
系统设置并 将 旧 JDK 路径替换为 新老.
将下面的代码粘贴到 bat 文件中,应该可以解决问题
@echo off
setlocal EnableDelayedExpansion
set jVersion=1.8.0_
set "javaPath=C:\Program Files\Java"
set newVersion=60
set oldVersion=51
set PATH=%jVersion%%oldVersion%
echo before path change : !PATH!
set PATH=!PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%!
echo final path change : !PATH!
pause
我正在尝试使用批处理文件升级 Java,我需要更改 PATH 系统变量以反映该更改。在 PATH 变量的开头我有
C:\Program Files\Java\jdk1.8.0_51;...
我需要将 jdk 值更改为 jdk1.8.0_60。我对命令行和批处理文件比较陌生,所以我可能误解了一些东西。这就是我正在尝试的。
我有几个变量
jVersion=1.8.0_
javaPath=C:\Program Files\Java
newVersion=60
oldVersion=51
我发现了一些关于用像这样的文字值替换字符串的方法
set PATH=%PATH:1.8.0_51=1.8.0_60%
但我无法让它与变量一起工作...
set PATH=%%PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%%%
我不知道你是需要 2% 的外围,还是只需要一个,或者 !'s。我对延迟扩张的知识不是很有信心。我也不知道可不可以。
作为奖励,我真的很希望能够将...\Java\ 之后的任何内容替换为我的新值。这只是为了以防万一我不知道 jdk
的 PATH 变量中的值谢谢!
编辑:
通过在我的代码的修改版本之前使用命令 call
我能够让它工作
call set PATH=%PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%%
我仍在尝试弄清楚如何使其通用并将 ...\jdk
之后的任何内容更改为我拥有的值。
这不是您想要做的,但可能会解决问题。
创建一个名为 JAVA_HOME
的新环境变量,并让它指向您的 java 安装文件夹。从现在开始,改为操纵这个 JAVA_HOME
变量。您每次都可以用脚本替换它。
编辑您的 PATH
环境变量(仅一次),使其包含这个新的 JAVA_HOME
变量,如下所示 PATH=%JAVA_HOME%\bin;
我想你想要这个:
set PATH=C:\Program Files\Java\jdk1.8.0_60;%PATH%
如果您将新的 JDK 放在 当前 路径之前,OS 将使用新的 JDK。
但是您最好编辑 PATH
系统设置并 将 旧 JDK 路径替换为 新老.
将下面的代码粘贴到 bat 文件中,应该可以解决问题
@echo off
setlocal EnableDelayedExpansion
set jVersion=1.8.0_
set "javaPath=C:\Program Files\Java"
set newVersion=60
set oldVersion=51
set PATH=%jVersion%%oldVersion%
echo before path change : !PATH!
set PATH=!PATH:%jVersion%%oldVersion%=%jVersion%%newVersion%!
echo final path change : !PATH!
pause