我通常是批处理文件的新手,我正在尝试制作一个RPG,但我正在寻找的东西超过了我对批处理文件的了解,所以我想知道如何建立一个系统,你可以查看创建的配置文件/用户/数据,然后决定对它进行加载,删除等操作
数据选择
:DataList
cls
echo.
echo Datas
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo TEST
echo TEST02
echo TEST03
set /p Datas=Enter=
if %Datas% == %CurrentData% goto ?
^TEST ^TEST ^TESTData
所以这就是你会看到的......
Datas
---------------
TEST
TEST02
TEST03
选择TESTData
后 :TESTData
echo.
echo TEST Data
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo 1) Load Current Data
echo 2) Delete Current Data
echo 3) Back
set /p DataOptions=Enter=
if %DataOptions% equ 1 goto %TEST%Data
if %DataOptions% equ 2 then do DEL %TEST%Data
if %DataOptions% equ 3 goto DataList
这就是你会看到的
TEST Data
--------------
1) Load Current Data
2) Delete Current Data
3) Back
所以我基本上需要让它运行,以便每次你创建一个新的数据,它将它添加到if%Datas%==%CurrentDatas%的函数中,并且当你选择数据时你可以删除它
答案 0 :(得分:0)
如果你的Datas是一个动态数组,你不能批量硬编码,你必须迭代。
这意味着您无法使用GOTO :%...%
,因为%...%
是意料之外的,并且您的标签已经写好了!
批量处理数组并不容易,但可能。确保批量启动时SETLOCAL ENABLEDELAYEDEXPANSION
。
步骤1:显示数据 - 我假设数据是profiles/users/data
:DataList
SET DATA_COUNT=0
FOR %%i IN (profiles\users\data\*) DO (
SET /A DATA_COUNT+=1
SET %DATA[!DATA_COUNT!]%=%%i
ECHO !DATA_COUNT!) %%i
)
第2步:获取用户输入
SET /P Datas=Enter=
REM Get sure thar %Datas% is a number:
SET /A Datas*=1
IF %Datas% GEQ 1 IF %Datas% LEQ %DATA_COUNT% (
SET TEST=!DATA[%Datas%]!
REM Note that from now on, your selected data is stored in %TEST%
GOTO :TESTData
)
ECHO Invalid option!
PAUSE
GOTO :DataList
第3步:对数据进行操作
:TESTData
ECHO TEST Data: %TEST%
ECHO -----------------
ECHO 1) Load Current Data
ECHO 2) Delete Current Data
ECHO 3) Back
SET /P DataOption=Enter=
SET /A DataOption*=1
IF %DataOptions% EQU 1 GOTO :Load_Data
IF %DataOptions% EQU 2 (
DEL %TEST%
GOTO :DataList
)
IF %DataOptions% EQU 3 GOTO :DataList
ECHO Invalid option!
PAUSE
GOTO :TESTData
祝你好运!