0

我通常是新的批处理文件,我正在尝试制作 RPG,但我正在寻找的内容超出了我对批处理文件的了解,所以我想知道如何制作一个可以看到配置文件的系统/users/data 已创建,然后决定您将对其执行的操作加载、删除等。

数据选择

    :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% 的函数中,并且当你选择数据时你可以删除它。

4

1 回答 1

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
)

第二步:获取用户输入

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

第三步:对数据的操作

: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

祝你好运!

于 2013-07-31T08:36:12.740 回答