如何使用groovy在源目录和目标的路径中使用该变量

时间:2017-12-04 10:20:11

标签: groovy

git1存储库有一个名为sports的文件夹,其中还包含子文件夹和文件。我想复制由git diff给出的command2输出给出的文件

def command2 = "git diff --stat @{12.hours.ago}"
Process process = command2.execute(null, new File('C:/git1'))
def b=process.text
println b

Groovy控制台的输出为Sports/Cricket/Players/Virat.txt 现在我想在sourceDir中使用此文件路径,如下所示。

def sourceDir = "C:/git1/$b"
def destinationDir = "D:/git1/$b"
(new AntBuilder()).copy(file: sourceDir, tofile: destinationDir)

这是错误Warning: Could not find file C:\git1\Sports\Cricket\Players\Virat.txt  复印。

1 个答案:

答案 0 :(得分:0)

正如您在使用字节数组的注释中所看到的,字符串的最后一个字符是换行符(10)。这当然使路径无效,但在错误消息中不容易识别。在.trim()之后添加.text,它应该同时适用于AntBuilderFiles以及Windows和Linux。如果你在Windows上完成它,那么在10之前还会有13个。

另一种可能更好的方法是不要像你一样使用git diff,因为这是一个瓷器命令。顾名思义,瓷器命令不稳定,它们的参数和输出可以随时改变。它们仅供人类使用,不适用于脚本。脚本应该使用在输入和输出方面更稳定的管道命令。使用相应的管道命令,您可能没有遇到问题。