我已经在Ruby中通过示例设置shuffle_play.rb来在Windows上工作,使用mpg123而不是ogg123。关键部分是一个叫做play_file的方法,我最初写的就是这个
def play_file(file)
system("mpg123 \"#{file}\"")
end
我的mpg123与我的脚本在同一个目录中...它没有用。但这确实有效:
def play_file(file)
system("mpg123.exe \"#{file}\"")
end
我认为这是因为我在%PATH%中没有工作目录(实际上当我添加它时问题就消失了)但是即便如此,我还不太了解Windows以了解其中的差异。有人可以解释一下这个理由吗?
答案 0 :(得分:3)
可能这些示例假设您使用的是* nix变体,例如Linux或Mac。在那些操作系统中,程序被称为mpg123
,因为那些操作系统不关心扩展,只检查文件是否具有可执行属性
在Windows上,事情非常不同。 Windows决定某些程序是否是程序,具体取决于扩展名(.exe,.com,.bat,.cmd等)。因此,Windows中的程序必须被称为mpg123.exe
。如果在Windows上打开命令行,则可以在不指定扩展名的情况下运行程序,因为Windows会自动尝试不同的扩展名。尝试不同扩展的这种行为在命令行中发生 ONLY ,而不是在您尝试从另一个程序调用程序时。
有一个名为PATHEXT的环境变量列出了哪些顺序窗口尝试不同的扩展。在我的计算机上,列表是:
C:\Windows\System32>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.RB;.RBW
我希望很清楚。如果你想在ruby中编码,安装Linux或获得Mac,那么建议你。