使用从另一个目录拖放到批处理文件上不起作用

时间:2013-03-07 00:23:07

标签: windows batch-file

我有一个如下所示的文件夹结构:

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

基本上,我希望能够将输入文件拖放到DROP_OVER_ME.bat批处理文件的顶部,并将输入文件的路径传递给exe。

这是我的批处理文件的样子:

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

当我将input_file.txt拖放到批处理文件上时,一切正常 - my_program.exe成功接收输入文件的路径并运行。

但是,当input_file.txt位于项目文件夹之外时,拖放它会使批处理文件弹出一条弹出消息说

  

Windows无法找到'bin / my_program.exe'。确保正确输入名称,然后重试。

如何修复我的批处理文件,以便从文件系统中的任意位置拖放文件?

1 个答案:

答案 0 :(得分:10)

批处理脚本的基础是将当前工作目录作为您从拖动的目录,而不是包含该脚本的目录。 (如果愿意,可以通过在脚本中添加echo %cd% && pause来测试。)尝试按如下方式修改脚本,以消除有关文件路径的任何歧义:

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