File 将两个批处理文件与设置值挂钩(过早退出?)

File 将两个批处理文件与设置值挂钩(过早退出?),file,batch-file,File,Batch File,一个问题是,在此结束时尝试调用createserver.bat时发生崩溃 del %USERPROFILE%\Desktop\TerrariaServer\filebin\serverparams.cmd wget http://***/serverparams.cmd call serverparams.cmd IF name==default ( del %USERPROFILE%\Desktop\TerrariaServer\filebin\serverparams.cmd call

一个问题是,在此结束时尝试调用createserver.bat时发生崩溃

del %USERPROFILE%\Desktop\TerrariaServer\filebin\serverparams.cmd
wget http://***/serverparams.cmd

call serverparams.cmd

IF name==default (
del %USERPROFILE%\Desktop\TerrariaServer\filebin\serverparams.cmd
call senderror.bat
) ELSE (
randomport -default -defaut -default
timeout /t 1
) 
IF NOT name==default (
sysresourceoutput
timeout /t 5
call sysresources
IF %ram% GTR 1600 (
call %USERPROFILE%\Desktop\TerrariaServer\createserver.bat
)
)
尽管createserver.bat本身运行良好

另一个问题是通过调用serverparams.cmd链接设置值。。或者使用上面的方法正确设置serverparams值,尽管通过下面startserver中的一系列命令运行它(在基本目录中)是正确的

我的问题是,我有没有遗漏任何细微差别?我认为有一种更动态的方式来列出一组递增变量,而不是手动将它们命名为var01、var02


另外,它在%worldname%后面加了一个空格,但我同意。

这样的行永远不会执行,因为没有%variables%要计算,它比较的是不同的静态字符串

IF name==默认值(

当用户配置文件包含空格或&字符时,这样的行将失败。解决方案是将整个“path\filename”括在双引号中:

del”%USERPROFILE%\Desktop\terriaserver\filebin\serverparams.cmd“

像这样的行应该被编辑以包括行开始处的重定向。这解决了每行末尾的空格问题

ECHO set端口=%var1%>%path%\%name%\u set.cmd

以这种方式重写行并删除尾随空格

>"%path%\%name%_set.cmd" ECHO set port=%var1%
>>"%path%\%name%_set.cmd" ECHO set players=%var2%

包含双引号以适应较长的pathname\filename元素,并将%path%name更改为其他内容,因为
path
是一个系统变量,使用它将破坏一切。

类似于
IF%ram%GTR 1600的行(
如果在块开始时变量未定义,则在复合语句中将失败,并且将使用变量的起始值,而不是像在
调用sysresources
中那样在块中分配的任何值。请参阅此处与
延迟扩展相关的无尽解决方案
“if name==default(”有趣的是,没有定义%ram%之类的东西导致了失败。
>"%path%\%name%_set.cmd" ECHO set port=%var1%
>>"%path%\%name%_set.cmd" ECHO set players=%var2%