Ruby通过拖放到rb脚本接受参数

Ruby通过拖放到rb脚本接受参数,ruby,windows-7,drag-and-drop,Ruby,Windows 7,Drag And Drop,可能重复: 我想让ruby以删除的文件作为参数打开。我运行Win7 Enterprise和Ruby 1.8.6,并尝试了RubyDragAndDrop.dll,但无法安装。有什么想法吗?另一种方法是创建一个批处理文件来处理拖放部件。如图所示,当您将文件拖放到批处理文件上时,拖放的文件列表将以空格分隔的列表形式存储在%*中。简单地说是ruby yourscript.rb%*的批处理文件应该将此文件列表传递给脚本(在脚本中可以使用ARGS数组访问参数)。问题是,如果从包含ruby文件的文件夹以外的

可能重复:


我想让ruby以删除的文件作为参数打开。我运行Win7 Enterprise和Ruby 1.8.6,并尝试了RubyDragAndDrop.dll,但无法安装。有什么想法吗?

另一种方法是创建一个批处理文件来处理拖放部件。如图所示,当您将文件拖放到批处理文件上时,拖放的文件列表将以空格分隔的列表形式存储在
%*
中。简单地说是
ruby yourscript.rb%*
的批处理文件应该将此文件列表传递给脚本(在脚本中可以使用
ARGS
数组访问参数)。

问题是,如果从包含ruby文件的文件夹以外的文件夹拖动文件,会出现链接错误,当它试图在拖动文件的工作目录而不是文件运行的情况下运行脚本时。例如,桌面上的文件file1被拖到文件夹Folder1中的bat文件中。bat文件调用Folder1中的ruby脚本。pwd(从bat文件写入提示符)是桌面,即使bat文件位于Folder1中。有没有办法让文件从bat文件的文件夹中运行?在启动Ruby脚本之前,在包含.bat文件的文件夹中添加一行执行
cd
(使用绝对路径)的命令。这很有效,但需要注意;在我尝试使用BAT文件之前,我尝试了一个C++应用程序,它只是调用系统,然后作为一个字符串传递到ARGS中。即使使用cd,我也无法让它工作。我不知道这是否是用户错误,但bat使用了cd。谢谢。@Andrew barber,如果你看这两个问题,你应该意识到它们不是重复的,这里的问题是特定窗口,我的答案是windows答案,另一个问题是跨平台的,我把我的答案贴在那里作为参考。因此,我认为有必要将此问题/答案提交给revice–peter刚刚编辑