我正在扫描文件夹中的音频文件,并将它们转换为mp3。在RUBY中效果很好。但是,完成第一个转码后,它将停止整个循环
这是我的代码处理的分解。
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
exec exec_command
}
end
Run Code Online (Sandbox Code Playgroud)
发生的事情是,它将对找到的第一个文件进行代码转换,然后停止整个功能。有办法强迫它继续吗?
ffmpeg目前确实可以正常运行并完成,因此它没有破坏任何内容
exec通过运行给定命令来替换当前进程。例:
2.0.0-p598 :001 > exec 'echo "hello"'
hello
shivam@bluegene:$
Run Code Online (Sandbox Code Playgroud)
您可以看到如何exec用系统替换irb echo,然后系统自动退出。
因此,请尝试使用系统代替。这里使用相同的示例system:
2.0.0-p598 :003 > system 'echo "hello"'
hello
=> true
2.0.0-p598 :004 >
Run Code Online (Sandbox Code Playgroud)
您可以看到我仍然在irb中,执行命令后它没有退出。
这使您的代码如下所示:
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
system exec_command
}
end
Run Code Online (Sandbox Code Playgroud)