powershell脚本配置jdk环境变量

写这篇文章时,能想到原来多苦逼的自己~~

特别是那时,JAVA初学者往往刚开始用的是Myeclipse这种自动集成化的工具,用过这编译器的同学应该清楚,在这我就不再次吐槽了~

往往大家第一配置JDK环境变量的时候,总是不清楚配置哪里,就算配置过一两次,还是会忘记~

Linux平台Shell脚本很强大了,应该很快就能写一个脚本,自己配置,这里就不累赘了~

下面推荐用Windows自带的脚本(Powershell)来自动配置JDK,话说windows版本低了需要安装powershell~~貌似我没有遇到过~~

powershell被认为是一个C#封装的壳,可以调用所有的C#语言编写的类,所以功能和C#功能一样强大~

powershell也是一个弱类型的语言,声明变量时不需要指定变量的类型,很灵活~

同时,不需要额外的配置,保存为文件(.ps1)

需要的童鞋阔以参考下面代码,适合初学者,大牛请绕行

第一步:保存到文件中(.ps1)并复制到JDK安装目录

powershell脚本配置jdk环境变量_第1张图片

第二步:运行.ps1文件



下面是完成代码

$User="User"
$ph="Path"
$cp="CLASSPATH"
$jh="JAVA_HOME"
$java=[System.Environment]::GetEnvironmentVariable($jh,$User)
#清除旧数据
function clearJp([string]$jp,[int]$index){
	Write-Host "--$jp--"
	$jpa=$jp -split ";"
	$len=$jpa.Length
	$result=""
	$mark=$true
	for($iter=$index;$iter -lt $len;$iter++){
		$inof=$jpa[$iter].IndexOf($java)
		if( ($inof -eq 0) -or ($jpa[$iter].Length -eq 0)){
			continue
		}
		if($mark){
			$mark=$False
		}
		else{
			$result=$result+";"
		}
		$result=$result+$jpa[$iter]
	}
	return $result
}

##删除旧数据
function clearJh(){
	$jp=[System.Environment]::GetEnvironmentVariable($ph,$User)
	$jc=[System.Environment]::GetEnvironmentVariable($cp,$User)
	$jpr=clearJp $jp
	$jcr=clearJp $jc
	Write-Host "jpr:$jpr"
	[System.Environment]::SetEnvironmentVariable($ph,$jpr,$User)
	Write-Host "jcr:$jcr"
	[System.Environment]::SetEnvironmentVariable($cp,$jcr,$User)
}

if($java){
	clearJh 
}

function setJDKEnv([string]$pname,[string]$val,[string]$prefix)
{
	$oldval=[System.Environment]::GetEnvironmentVariable($pname,$User)
	###环境变量为空需要另外处理
	if($oldval.Length -eq 0){
		$oldval=$prefix
	}
	$oldval=$oldval+";"
	[System.Environment]::SetEnvironmentVariable($pname,"$oldval$val",$User)
}
$java_home=$pwd
##配置JAVA_HOME
[System.Environment]::SetEnvironmentVariable($jh,$java_home,$User)
##配置Path
setJDKEnv $ph "$java_home\bin;$java_home\jre\bin" ""
##配置CLASSPATH
setJDKEnv $cp "$java_home\lib;$java_home\lib\tools.jar" "."
##测试
#java -version
Write-Host "回车键结束......"
Read-Host

请君斟酌,不良修改环境变量,可能让你电脑回到解放前大笑,完成时测试,遭遇过一次,已修复。

你可能感兴趣的:(POWERSHELL)