在工作中,遇到有时候目录中存在多个不同后缀的文件,需要保留最新的文件,删除旧文件,与批处理命令对比后,PowerShell更为简洁与易读。
生产环境中,目录往往是随着项目发展而日渐增加的。如果使用参数传入目录名,在后期维护上会显得繁琐。故可以每次执行Jenkins自动化之前均遍历一次目标目录。
如保留d盘中最新的7个zip压缩文件,删除其余的zip后缀冗余文件(只针对zip后缀的文件操作):
那对于多个目录的话,只需加上上文提到的遍历操作(输出字符串,并以“,”隔开):
def dir_name = powershell(script: "(Get-ChildItem -Path ${目标目录} | Select-Object -ExpandProperty Name) -join ','", returnStdout: true).trim()
for(dir in "${dir_name}".tokenize(',')){
// 定义一个cnt变量接收每一次遍历目录下的产物数量,注意需要将powershell的输出转换成整型用于下面与数字整型比较
def cnt = powershell(script: "(Get-ChildItem -Path ${dir}\\).Count ", returnStdout: true).trim().toInteger()
// 按需删除,这里是保留最新的7个文件,删除其余冗余文件
powershell "Get-ChildItem -Path ${目标目录} | Sort-Object LastWritetime -Descending | Select-Object -Skip 7 | Remove-Item -Force"
}
总结:对于powershell的使用,要擅于使用管道符。