我有一个如下所示的文件夹结构:
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'。确保正确输入名称,然后重试。
如何修复我的批处理文件,以便从文件系统中的任意位置拖放文件?
答案 0 :(得分:10)
批处理脚本的基础是将当前工作目录作为您从拖动的目录,而不是包含该脚本的目录。 (如果愿意,可以通过在脚本中添加echo %cd% && pause
来测试。)尝试按如下方式修改脚本,以消除有关文件路径的任何歧义:
@echo off
cd /d "%~dp0"
start "" "bin\my_program.exe" "%~f1"
exit /b