我正在尝试使用 Groovy 重命名目录中的文件,但我似乎无法理解它是如何工作的。
这是我的脚本:
import groovy.io.FileType
def dir = new File("C:/Users/דודו/Downloads/Busta_Rhymes-Genesis-(Retail)-2001-HHI")
def replace = {
if (it == '_') {
' '
}
}
String empty = ""
dir.eachFile (FileType.FILES) { file ->
String newName = file.name
newName = newName.replaceAll(~/Busta_Rhymes/, "$empty")
newName = newName.replaceAll(~/feat/, "ft")
newName = newName.replaceAll(~/-HHI/, "$empty")
newName = newName.replaceAll(~/--/, "-")
newName = newName.collectReplacements(replace)
file.renameTo newName
println file.name
}
当我运行它时,文件的名称没有按预期更改。我想知道我怎么能让这个工作。
最佳答案
这里有很多错误:
dir
变量不是目录;它是您实际要更改的目录中的文件。改变这一行:dir.eachFile (FileType.FILES) { file ->
对此:
dir.parentFile.eachFile (FileType.FILES) { file ->
renameTo
方法不会重命名本地名称(我知道,非常违反直觉),而是重命名路径。所以更改以下内容: String newName = file.name
对此:
String newName = file.path
println file.name
仍然打印出旧名称。 然而 ,如果您查看实际目录后记,您将看到该文件已在目录中正确重命名。 关于file - Groovy 重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39786470/