在 Jenkins 中清理 bat 命令输出 Groovy

cleanup bat command output in Jenkins Groovy

如何在 Jenkins 的管道脚本中清除 bat 命令的输出

以下是我用过的流水线脚本

Drive_list = bat (  label: 'Get Drive List',
                    returnStdout: true,
                    script: 'wmic logicaldisk where DriveType=3 get DeviceID'
                    ).trim()

Drive_list 现在包含以下内容。

{D:\Jenkins\workspace\test>wmic logicaldisk where DriveType=3 get DeviceID 
    DeviceID  

    C:        

    D:}

提取列表应该做什么{'C:','D:'}

我尝试使用 c_list = Drive_list.tokenize('\r\n') 标记化 Drive_list 来创建列表,现在 c_list 是

{[D:\Jenkins\workspace\test>wmic logicaldisk where DriveType=3 get DeviceID , DeviceID , , C: , , D:]}

清理 c_list 我试过以下 c_list.removeAll{ it.contains('DeviceID') 结果是

{[DeviceID , , C: , , D:]} 只删除了第一行,但仍有其他人添加到此驱动器 ID 有一些我无法删除的白色字符。

groovy 方法中 none 的原因是因为编码,通过添加编码选项修改管道脚本 "UTF-16LE" 有效。

Drive_list = bat (  label: 'Get Drive List',
                    returnStdout: true,
                    encoding  : "UTF-16LE",
                    script: 'wmic logicaldisk where DriveType=3 get DeviceID'
                    ).trim()

您可以使用 groovy(java) 本机方法获取根驱动器:

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()

File[] Drive_list = File.listRoots()