使⽤Kotlin写脚本
前⾔
Kotlin不仅可以⽤来写Android,也可以写后端,Desktop桌⾯程序,脚本(和未来的ios,⽹页,native等)
⽐如开发时使⽤Gradle的adle也可以使⽤kotlin脚本编写,只需要将后缀改为kts即可声明为kotlin脚本⽂件,如adle.kts,迁移指南:
可以说kotlin的功能⾮常的全,基本学会⼀门语⾔吃遍天下了
那普通的脚本如何⽤kotlin来写呢?
配置
⾸先需要下载安装jdk并配置⼀下jdk的环境变量:
jdk环境变量配置参考:
然后下载并配置kotlin脚本的环境变量:
kotlin环境下载:
如果你⽹络不好的话,可以通过百度云盘下载:
如果你⽹络好的话,可以通过Github下载到最新的:
然后下载的压缩包解压,⽐如解压到D盘的kotlinc⽬录下,进⼊到其bin⽬录下复制⽬录,如: D:\kotlinc\kotlinc\bin
然后把这个路径配置到path环境中,如下图序:
右键我的电脑->属性->往下滑动到⾼级系统设置
点环境变量
双击path
点新建然后将刚才复制的路径粘贴进去
然后⼀路点击确定将这些窗⼝都关闭掉,这样环境变量就都配置好了,接下来可以写脚本了
正⽂
在编程界有个不成⽂的规定,就是学任何语⾔或者特性前,先⽤你学的东西打印⼀个Hello World试试⼿,接下来我们就使⽤kts脚本来打印⼀下我们先在D盘新建⼀个hello.kts⽂件
然后右键编辑输⼊并保存
println("Hello World")
然后我们通过命令来执⾏此脚本
Win+R输⼊cmd打开命令⾏
分别输⼊以下命令,后⾯有注释什么意思
D:            //将命令⾏的执⾏⽬录切换到D盘根⽬录
kotlinc -script test.kts          //表⽰⽤配置的kotlin环境来执⾏本⽬录的脚本:test.kts
执⾏情况如下:
如果你的环境配置正确的话,就可以看到打印出来Hello World了 ,如果报错的话就检查⼀下你写的是否有问题和环境变量配置是否正确
但是每次都是⽤命令⾏就太⿇烦了,所以我们配置⼀下kts的快捷⽅式,使其双击就能运⾏
1.⾸先新建⼀个⽂件,取名为: 执⾏kts.bat
2.右键编辑,输⼊以下代码,保存
call kotlinc-jvm -script %~1
pause
这⾥简单解释⼀下这些命令的作⽤:
call 表⽰在本命令⾏中执⾏⼀些命令,不带call 可能会使该命令在新的命令⾏中执⾏
%~1 表⽰输⼊的⽂本的第⼀个,这⾥可以理解为,我拖⼊⼀个⽂件到这个⽂件上,这个⽂本1就表⽰这个⽂件的全路径
kotlinc-jvm -script %~1 那这个命令就是使⽤kotlin-jvm的运⾏⽅式运⾏kts脚本,并且路径是传⼊的⽂
本1
pause 就是暂停当前的命令⾏,直到接收到⽤户的输⼊才会⾛向下⼀⾏,⽽下⼀⾏如果没有代码,命令⾏就会直接退出,导致你看不到其中的内容,执⾏效果如下:
3.设置快捷⽅式
我们到刚才写的test.kts,右键->打开⽅式->选择其他应⽤->勾选始终使⽤此应⽤打开.kts⽂件->往下滑->更多应⽤->往下滑->在这台电脑上查其他应⽤->到你的执⾏kts.bat->打开,这样你就发现可以执⾏了,⽽且kts⽂件就可以双击执⾏了:
实战
但我们学会了如何写脚本来做什么呢?脚本能做的事就多了,⽐如:
1.⼀键执⾏⼀些复杂操作,更安全更简便,解放双⼿和⼤脑
假如你是⼀个安卓开发,给测试⼈员安装测试包的时候需要同时安装多个apk,你会怎么做呢?
可能全部复制到⼿机内存卡中,然后⼀个⼀个点击安装
也可能通过扫⼆维码⼀个⼀个装
也可以使⽤adb命令来⼀个⼀个装
但如果你使⽤脚本并且配置有adb环境的话,就可以写⼀个kts脚本,每次安装时只需要将⼿机插上,执⾏⼀次脚本即可,脚本如下(如果你想,还可以在安装完成播放⼀段⾳乐2333):
/**
* 打印命令
* 执⾏命令
* 打印结果
* [return]是否执⾏成功
安装jdk环境变量如何配置
*/
fun runAndWaitExec(cmd: String): Boolean {
println(cmd)
val exec = Runtime().exec(cmd)
exec.waitFor()
println(String(adAllBytes()))
val error = adAllBytes())
println(error)
return error.isEmpty()
}
java.io.File("apks").listFiles()//获取当前⽬录下的apks⽬录下的所有⽂件
.
map { it.absolutePath }//将⽂件转换成他们的具体路径
.filter { it.endsWith(".apk") }//过滤⼀下⽂件名,只要.apk结尾的⽂件
.forEach {//循环执⾏adb的安装apk命令
runAndWaitExec("adb install -r -d -t $it")
}
执⾏结果如下:
2.爬⾍
⽐如我们简单的获取⼀个⽹页的html数据并存到本地⽂件中:
println("开始爬")
val htmlText = java.URL("www.baidu").readText()//从百度的⽹站中读取所有内容
println("保存到本地")
val file = java.io.File("")//声明⼀个⽂件对象
file.writeText(htmlText)//将爬取的内容输出到⽂件中
println("爬完了")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。