zoukankan      html  css  js  c++  java
  • Win7 下以管理员身份运行批处理文件,切换JDK版本

    Win7下 切换JDK的批处理命令

    1. 批处理文件(必须以管理员身份执行)内容如下

    @echo off
    
    rem --- Base Config 配置JDK的安装目录 ---
    :init 
    set JAVA_HOME_1_8=C:Program FilesJavajdk1.8
    set JAVA_HOME_1_7=C:Program FilesJavajdk1.7
    
    :start 
    echo 当前使用的JDK 版本: 
    java -version 
    echo. 
    echo ============================================= 
    echo jdk版本列表 
    echo 1.8 
    echo 1.7
    echo ============================================= 
    
    :select
    set /p opt=请选择jdk版本: 
    if %opt%==1.8 (
        set TARGET_JAVA_HOME=%JAVA_HOME_1_8%
    )
    if %opt%==1.7 (
        set TARGET_JAVA_HOME=%JAVA_HOME_1_7%
    )
    
    echo 当前选择的Java路径:%TARGET_JAVA_HOME%
    
    wmic ENVIRONMENT where "name='JAVA_HOME'" delete
    wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"
    
    
    rem --- set path ---
    set jhb=%TARGET_JAVA_HOME%in
    set pt=%Path%
    
    
    call set pt=%%pt:%jhb%;=%%
    call set pt=%%pt:%jhb%=%%
     
    wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%jhb%;%pt%"
    
    rem 下面一句进入当前批处理文件所在的路径。因为,以管理员身份处理时,当前路径为%root%Systems32
    cd /d %~dp0 
    
    rem -- refresh env ---
    call RefreshEnv
    
    echo 请按任意键退出!   
    pause>nul
    
    @echo on
    

    2. 执行切换的RefreshEnv.exe文件 (copy到当前文件夹): 下载并解压RefreshEnv到当前bat目录

    备注

    1. 批处理文件改变环境变量
      • JAVA_HOME, 设置为目标版本JDK路径,需要管理员权限
    rem --- set JAVA_HOME  ---
    wmic ENVIRONMENT where "name='JAVA_HOME'" delete
    wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"
    
    • PATH, 增加 %JAVA_HOME%下的bin 路径到 %PATH%环境变量,需要管理员权限
    rem --- set PATH ---
    set jhb=%TARGET_JAVA_HOME%in
    set pt=%Path%
    
    1. 在以管理员身份运行时候,当前路径为 %System_root%/systems32, 需要将路径
      切换回当前批处理文件所在目录,以运行同路径下的文件 RefreshEnv.exe 以刷新环境变量
      • 改变路径的命令为:
        • cd %~dp0

    关于%~dp0的批处理命令的详细解释

    %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录

    cd是转到这个目录,不过我觉得 cd /d %~dp0 还好些. 适用于 批处理文件不在系统盘。

    选项语法:

    ~0 - 删除任何引号("),扩充 %0

    %~f0 - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)

    %~d0 - 仅将 %0 扩充到一个驱动器号

    %~p0 - 仅将 %0 扩充到一个路径

    %~n0 - 仅将 %0 扩充到一个文件名(“n”是name 文件名)

    %~x0 - 仅将 %0 扩充到一个文件扩展名

    %~s0 - 扩充的路径只含有短名(“s”为Short,短的)

    %~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)

    %~t0 - 将 %0 扩充到文件的日期/时间(“t”time)

    %~z0 - 将 %0 扩充到文件的大小(Size 大小)

    %~$PATH:0 - 查找列在路径环境变量的目录,并将 %0 扩充

    到找到的第一个完全合格的名称。如果环境变量名

    未被定义,或者没有找到文件,此组合键会扩充到

    空字符串

    可以组合修饰符来得到多重结果:

    %~dp0 - 仅将 %0 扩充到一个驱动器号和路径

    %~nx0 - 仅将 %0 扩充到一个文件名和扩展名

    %~fs0 - 仅将 %0 扩充到一个带有短名的完整路径名

    %~dp$PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充

    到找到的第一个驱动器号和路径。

    %~ftza0 - 将 %0 扩充到类似输出线路的 DIR

    %0为当前批处理文件

    如果0换成1为第一个文件,2为第2个


    %0代指批处理文件自身

    %~d0 是指批处理所在的盘符

    %~dp0 是盘符加路径

    cd /d %~dp0 就是进入批处理所在目录了

    参考文献

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/juking/p/6071477.html
Copyright © 2011-2022 走看看