使用从另一个目录拖放到batch file不起作用

我有一个像这样的文件夹结构:

project bin my_program.exe misc_stuff.exe DROP_OVER_ME.bat input_file.txt 

基本上,我希望能够将input文件拖放到DROP_OVER_ME.batbatch file之上,并将input文件的path传递给exe文件。

这是我的batch file的样子:

 @echo off start bin/my_program.exe %1 exit 

当我拖放input_file.txt到batch file,一切工作正常 – my_program.exe成功接收input文件的path并运行。

但是,当input_file.txt位于项目文件夹之外时,拖放它会使batch file抛出一个popup消息

Windows找不到“bin / my_program.exe”。 确保你input了正确的名字,然后再试一次。

我怎样才能修复我的batch file,所以我可以从文件系统内的任意位置拖放文件?

听起来像批处理脚本是以当前工作目录为基础,而不是包含脚本的目录。 (如果需要,可以通过在脚本中添加echo %cd% && pause来测试。)尝试修改脚本,如下所示,以消除文件路径的任何歧义:

 @echo off cd /d "%~dp0" start "" "bin\my_program.exe" "%~f1" exit /b