Batch file 在批处理文件上通过拖放更改相对路径

Batch file 在批处理文件上通过拖放更改相对路径,batch-file,relative-path,Batch File,Relative Path,这是我的代码,我一次拖放几个图像来压缩它们 if [%1]==[] goto :eof :loop start %~dp0ImgCompress.exe %1 shift if not [%1]==[] goto loop 它对第一个文件很有效,但在第二个文件及其以外,相对路径(%~dp0)将成为我拖放的文件的相对路径。我认为dp0是执行文件的相对路径。知道如何克服这个问题吗?批处理文件的路径是%0。Shift使%1变为%0。要解决您的问题,请保存%dp0: set mydir=%~dp0

这是我的代码,我一次拖放几个图像来压缩它们

if [%1]==[] goto :eof
:loop
start %~dp0ImgCompress.exe %1
shift
if not [%1]==[] goto loop

它对第一个文件很有效,但在第二个文件及其以外,相对路径(%~dp0)将成为我拖放的文件的相对路径。我认为dp0是执行文件的相对路径。知道如何克服这个问题吗?

批处理文件的路径是%0。Shift使%1变为%0。要解决您的问题,请保存%dp0:

set mydir=%~dp0
以后再使用它:

start %mydir%ImgCompress.exe %1