Batch file 使用“启动”启动服务器&引用"E;%~dp0\server.exe“;,由于空格而忽略参数

Batch file 使用“启动”启动服务器&引用"E;%~dp0\server.exe“;,由于空格而忽略参数,batch-file,unrealscript,Batch File,Unrealscript,server.exe没有执行“LAN”之后的所有操作。我可以在服务器日志文件中看到,它正在尝试打开LAN,但应该尝试打开%m%.aao,这意味着忽略了“LAN”之后的所有操作 我怎样才能解决这个问题 使用 将无法工作,因为我正在尝试从WOTGreal运行批处理文件。我不确定为什么,但我为我打开的其他两个文件/程序修复它的方法是使用%dp0,但服务器要求不能忽略空格 我正在尝试从WOTGreal运行批处理文件 因此,批处理文件将从其他文件夹运行。这也意味着server.exe将从其他文件夹运行。因

server.exe没有执行“LAN”之后的所有操作。我可以在服务器日志文件中看到,它正在尝试打开LAN,但应该尝试打开%m%.aao,这意味着忽略了“LAN”之后的所有操作

我怎样才能解决这个问题

使用

将无法工作,因为我正在尝试从WOTGreal运行批处理文件。我不确定为什么,但我为我打开的其他两个文件/程序修复它的方法是使用%dp0,但服务器要求不能忽略空格

我正在尝试从WOTGreal运行批处理文件

因此,批处理文件将从其他文件夹运行。这也意味着server.exe将从其他文件夹运行。因此,将从错误的目录中读取本地文件名,如
%M%.aao log=server.log ini=server.ini

您可能还可以通过在所有其他路径中使用
%~dp0
来解决这个问题。但是在批处理文件的开头更改当前目录可能更容易。为此,在批处理文件的开头添加以下行

START "Test Server" server.exe LAN %M%.aao log=server.log ini=server.ini

如果环境变量
M
所保留的字符串包含空格或以下字符之一
&()[]{}^=;!'+`~,必须使用
%M%.aao“
,并将
“%~dp0\server.exe”
更改为
“%~dp0server.exe”
因为用
%~dp0
引用的批处理文件的驱动器和路径总是以反斜杠结束,因此在路径
server.exe
中的两个反斜杠上串联执行时,会再添加一个反斜杠。Windows内核函数在path中更正此错误,但将可执行文件的路径指定为错误路径并不好。
START "Test Server" server.exe LAN %M%.aao log=server.log ini=server.ini
cd /d "%~dp0"