如何从变量中的数组中提取mod文件夹名称列表,检查该mod文件夹是否存在,并填充modchecker列表



我在launcher.bat服务器命令行变量中有一个mod列表,用分号分隔:

set Antistasi2=-mod=%ModPath%@CBA_A3;%ModPath%@Antistasi;%ModPath%@CAC_AE1.4;%ModPath%@AWR;%ModPath%@RealEngine;%ModPath%@ace;%ModPath%@EnhancedMovement;%ModPath%@EnhancedMovementRework;%ModPath%@MfHealAbort;%ModPath%@VET_Unflipping;%ModPath%@AdvancedRappelling;%ModPath%@AdvancedUrbanRappelling;%ModPath%@Blastcore`

我有一个简单的mod检查器(modchecker.bat从launcher.bat中调用,检查现有的文件夹与预定义的mod名称和类型缺失的mod文件夹名称(mods):

if not exist %ModPath%"@CBA_A3" echo @CBA_A3 NOT FOUND
if not exist %ModPath%"@Antistasi" echo @Antistasi NOT FOUND
...
if not exist %ModPath%"@Blastcore" echo @Blastcore NOT FOUND

但是有比当前命令行中使用的mod更多的预定义mod文件夹名称。

我想要的是不使用预定义的mod文件夹列表,而是使用命令行来填充mod检查器,并为命令行中使用的每个mod在mod检查器中创建if not exist %ModPath%"@modxxx" echo @modxxx NOT FOUND行。

换句话说,我需要从命令行数组中获得mod文件夹名称(-Mod=内部的%Antistasi2%变量(那些将是:@CBA_A3, @Antistasi等,一直到@Blastcore),并将它们自动集成到mod检查器中,以便命令行中的mod列表自动填充mod检查器中缺失的mod搜索,因此无需手动预定义。

我不知道该怎么做。请帮助。

提前感谢。

@ECHO OFF
SETLOCAL
SET "ModPath=q:somewhereorother"
SET "list= %* CBA_A3 Antistasi CAC_AE1.4 AWR RealEngine ace EnhancedMovement EnhancedMovementRework MfHealAbort VET_Unflipping AdvancedRappelling AdvancedUrbanRappelling Blastcore"
SET "missing="
FOR %%e IN (%list%) DO IF NOT EXIST %ModPath%@%%e ECHO %%e missing&SET "missing=y"
rem IF DEFINED missing pause&GOTO :eof
SET "list=%list:  = %"
CALL SET "Antistasi2=%%list: =;%ModPath%@%%"
SET "Antistasi2=-mod=%Antistasi2:~1%"
SET anti
GOTO :EOF

我假设集合{CBA_A3..Blastcore}将始终是必需的,并且可能会指定一些额外的模块,因此

thisbatch extra something hello

extra,somethinghello添加到这些标准项中。

我还假设所需的每个模块都以@为前缀。

我已经建立了一个虚拟的modpath进行测试。你需要修改这个

list将命令行中的参数添加到标准列表中。注意,前导空格很重要。

我已经指出了如果模块丢失会发生什么。只需移除rem以激活pausegoto :eof(如果激活,它们应该烹饪晚餐并终止批次)

。将list中的所有双空格替换为单空格。

接下来,将list中的所有空格替换为;%modpath%@(注意modpath的值将被替换),并分配给Antistasi2

然后去掉Antistasi2的第一个字符,加上-mod=

注意:使用set "var=value"设置字符串值-这避免了尾随空格引起的问题。不要指定"或终端反斜杠或空格。从元素中构建路径名——与直觉相反,这可能会使过程更容易。如果使用set var="value"语法,则引号成为赋值的一部分。

如果您按照建议删除,则需要在if not exist语句和call set语句中将其插入到@之前。

相关内容

  • 没有找到相关文章

最新更新