以下是我的代码:
task encodeFile(type: Exec) {
workingDir dirName
def files = file(dirName).listFiles()
files.each { File file ->
if (file.isFile()) {
println " *** $file.name *** "
def tmpName = "tmp$file.name"
println " === $tmpName"
commandLine "cmd", "/c native2ascii $file.name $tmpName"
commandLine "cmd", "/c del $file.name"
commandLine "cmd", "/c move $tmpName $file.name"
// commandLine "cmd", "/c move $file.name $tmpName"
println " === $file.name is moved"
println "----------------------------------"
// """executable "native2ascii" "$file.name" "$tmpName""""".execute()
}
}
}
我正在尝试对指定文件夹下的所有文件进行编码以进行本地化。但是,当我运行上面的代码时,只有最后一个文件按预期进行了更改。我打印了一些消息,并且所有文件都被迭代。
有人知道这里会发生什么吗?
最佳答案
是的,在文件对象上调用的每个对象的最后一次迭代都可以使配置成功并赢得胜利-您可以更改传递来验证文件的顺序。native2ascii
任务默认是内置的gradle,您可以尝试例如:
task n2a {
doLast {
ant.native2ascii(
src : project.file('n2a-src'),
dest : project.file('n2a-dest')
)
}
}
似乎没有必要通过
Exec
任务来执行此操作。
关于gradle - 在Gradle中运行命令行不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29246140/