咨询一个批处理命令的问题,调用批处理文件,用相对路径启动程序

写了几个批处理文件,因为启动程序挂载不同的参数会有不同的效果: 比如: 1.bat 内容是 Start “” “D2Loader.exe” -direct -txt 2.bat 内容是 Start “” “D2Loader.exe” -w -mpq patch_d2.mpq -direct 等等。 这些bat文件和那个需要挂参数的文件在同一个目录,所以直接运行bat文件是能正常启动的。

现在有一个在其他目录的选择程序需要运行这些bat文件,但是bat文件会把启动目录认为是之前那个选择程序所在的目录,这就导致bat不能正常启动了,请问这个问题怎么解决?

比如运行后cmd窗口会提示:f:game\root>Start “” “D2Loader.exe” -direct -txt 弹出对话框提示windows找不到文件D2Loader.exe 那个f:game\root就是选择程序所在目录,和D2Loader.exe不是一个目录

路径错误。你把文件直接拖进 cmd,就能看到正确的路径了

你需要的是diablo2的mod启动器,比如d2se

这是求助还是搞阅读理解,就不能好好分行么
如果你说的是在 f:\game\root 执行 1.bat2.bat 出错:
方法A:
bat里路径改一下,"D2Loader.exe" 改成 "%~dp0D2Loader.exe"
%~dp0 = bat自身所在路径
方法B:
1.bat2.bat 的快捷方式放到 f:\game\root
方法C:
"D2Loader.exe" 改成 ".\D2Loader.exe"
方法D:
bat中使用绝对路径

1 Like

试试在start命令前加一行: cd /d “D2Loader.exe的路径”

在用D2SE了,不过不能适应所有情况。(但是用来管理20多个MOD还是很爽的)

不能使用绝对路径,我希望把整个文件夹拷贝到别的地方去,也都能用,所以整个界面管理都是用的相对路径。 不过一会有空了我试试".\D2Loader.exe"的方式。

如上面几张图所示,其实就是我有很多游戏,也都分门别类放好了,而且全都是免安装的(除了INSTALL文件夹里面的,这里是四五个安装包,想玩的话,只能安装)

每个分类下除了一些游戏本体文件夹,还有两个文件夹,分别是IMAGE和RTF,在IMAGE下放了和游戏同名的游戏截图,RTF下是和游戏同名的一个RTF介绍文件,和另一个带_crack后缀的文件(介绍修改器用法的)

然后我用做DVD启动菜单的一个工具做了下面这个管理界面,顶上一排是大分类,没有二级菜单

左边listbox是对应分类的游戏,右边上面文本框加载对应游戏介绍的rtf文件,下面的文本框加载带crack的文件,右下图片框加载对应游戏截图。

这样我左边列表框双击能启动游戏,普通单击的话,文本框和图片框自动加载,单击“运行”那个按钮启动游戏、单击“文件夹”那个按钮就在资源管理器中打开对应文件夹,单击“修改器”的话就打开对应游戏的修改器(有些游戏没有修改器,就没反应)

有些游戏是一个系列,比如红警、暗黑、疯狂机器、愤怒的小鸟等,这时候双击列表框,或者单击“运行”按钮,会弹出一个让选择版本的对话框,选完之后确定,就运行对应版本的游戏了。

之所以做这个管理界面,就是有些游戏时间太长不玩,就忘了按键设置、玩法什么的,有时候光看文件夹名也想不起来是什么游戏,所以才做了这个东西。

现在用着还挺舒服的。

我倒是经常忘记游戏玩到哪里了,一放下就是数月半年……

没看懂题意.

dos里路径一般是这样的

C:\Users\小恐龙>cd…

C:\Users>cd \

C:>

bat里要随处启动,可以这样:

在批处理开头加入 cd /d %~dp0

假如你的bat文件在C:/1/2.bat,则%0就是C:/1/2.bat, %~dp0是C:/1/。

另外,%i提取第i个命令选项,例如%1提取第1个参数,i可以取值从1到9

    %~0: 取文件名(名+扩展名)
    %~f0:取全路径
    %~d0:取驱动器名
    %~p0:只取路径(不包驱动器)
    %~n0:只取文件名
    %~x0:只取文件扩展名
    %~s0:取缩写全路径名
    %~a0:取文件属性
    %~t0:取文件创建时间
    %~z0:取文件大小