Пример кода ниже. По сути, вы можете просто использовать функцию замены строки. Но пошел немного дальше, чтобы обслужить неизвестное имя файла, соответствующее соглашению, которое вы изложили в примере.
#!groovy
// Setup vars to replicate your questions specs
env.BRANCH_NAME = "feature/xyz"
String file = 'filename.exe'
// Replace any forward slash with an underscore
String branchName = (env.BRANCH_NAME).replace('/', '_')
// Split apart your current filename
List fileParts = file.tokenize('.')
// Construct the original filename, catering for multiple period usecases
String originalFileName = fileParts[0..-2].join('.')
// Seperate the extension for use later
String originalExtension = fileParts[-1]
// Combine into the desired filename as per your requirements
String newFileName = "${originalFileName}_${branchName}.${originalExtension}"