12

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

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”。请确保您输入了正确的名称,然后重试。

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

4

1 回答 1

10

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

@echo off
cd /d "%~dp0"
start "" "bin\my_program.exe" "%~f1"
exit /b
于 2013-03-07T01:30:11.397 回答