2015-05-31 3 views
1

У меня недавно возникла проблема. Я делаю модуль игры в пакетном режиме, и я получил странную ошибку:Умножение ошибки: * было неожиданным на данный момент

Multiplying error "*!Map_PlayerLengthX! was unexpected at this time"

Это весь код:

@echo off 
setlocal enabledelayedexpansion 

pause >nul 
cls 
call :Map_DefinePlayer 4 2 loloolol 
echo %Px1y1%%Px2y1%%Px3y1%%Px4y1% 
echo %Px1y2%%Px2y2%%Px3y2%%Px4y2% 
pause >nul 

::::::::::::::::::::::::::: 
:: Map v0.10 By KKZiomek :: 
::::::::::::::::::::::::::: 
:Map_Init 
set Map_Running=1 
goto :eof 
:Map_Load 
if !Map_Running!==0 goto :eof 
set Map_Load_FileToLoad=%~1 
set Map_Load_BorderX=%~2 
set Map_Load_BorderY=%~3 
set Map_Load_BChar=%~4 
set Map_Load_LineTotal=0 
for /f "tokens=* delims= usebackq" %%l in (!Map_Load_FileToLoad!) do (
    set /a Map_Load_LineTotal+=1 
    set Map_Line!Map_Load_LineTotal!=%%l 
) 
:Map_Load_ApplyCoords 
for /l %%g in (1,1,!Map_Load_LineTotal!) do (
    call :Map_Load_StrLen Map_Line%%g Map_Line%%g_Len 
    set /a Map_Load_ApplyCoords_DecidedLen+=!Map_Line%%g_Len! 
) 
set /a Map_Load_ApplyCoords_DecidedLen/=!Map_Load_LineTotal! 
for /l %%y in (1,1,!Map_Load_LineTotal!) do (
    for /l %%x in (1,1,!Map_Load_ApplyCoords_DecidedLen!) do (
     set x%%xy%%y=!Map_Line%%y:~%%x,1! 
    ) 
) 
goto :eof 
:Map_Load_StrLen 
setlocal disabledelayedexpansion 
set Map_Load_StrLen_Len=0 
if defined %~1 for /f "delims=:" %%n in (
    '"(cmd /v:on /c echo(!%~1!&echo()|findstr /o ^^"' 
) do set /a "Map_Load_StrLen_Len=%%n-3" 
endlocal & if "%~2" neq "" (set %~2=%Map_Load_StrLen_Len%) else echo %Map_Load_StrLen_Len% 
exit /b 
:Map_Display 
cls 
for /l %%y in (1,1,!Map_Load_LineTotal!) do (
    set Map_Display_Line%%y= 
    for /l %%x in (1,1,!Map_Load_ApplyCoords_DecidedLen!) do (
     set Map_Display_Line%%y=!Map_Display_Line%%y!!x%%xy%%y! 
    ) 
) 
for /l %%z in (1,1,!Map_Load_LineTotal!) do (
    echo !Map_Display_Line%%z! 
) 
goto :eof 
:Map_ReloadPos 
set XPos=%~1 
set YPos=%~2 
set x!XPos!y!YPos!=!Map_Line%YPos%:~%XPos%,1! 
goto :eof 
:Map_DefinePlayer 
set Map_PlayerLengthX=%~1 
set Map_PlayerWidthY=%~2 
set Map_DefinePlayer_Scheme=%~3 
set /a Map_DefinePlayer_Modifier=!Map_PlayerLengthX!-1 
for /l %%p in (1,1,!Map_PlayerWidthY!) do (
    for /l %%q in (0,1,!Map_DefinePlayer_Modifier!) do (
     set /a localq=%%q+1 
     set /a modq=%%q+((%%p-1)*!Map_PlayerLengthX!) 
     set Px%localq%y%%p=!Map_DefinePlayer_Scheme:~%modq%,1! 
    ) 
) 
::::::::::::::::::::::::::: 
::::::::::::::::::::::::::: 
::::::::::::::::::::::::::: 

Я получаю сообщение об ошибке в функции :Map_DefinePlayer. Я думаю, что это главным образом в этой строке: set /a modq=%%q+((%%p-1)*!Map_PlayerLengthX!)

Каждая функция отлично работает вместо этой функции из-за этой странной ошибки умножения. Я попытался enbling замедленного расширения снова, меняя !Map_PlayerLengthX! в %Map_PlayerLengthX%, но тогда он только изменил ошибку в *4 was unexpected at this time

Каждые имеет представление о том, что вызывает это и как это исправить?

ответ

0

попробуйте:

set /a "modq=%%q+((%%p-1)*!Map_PlayerLengthX!)" 

скобки в выражении берутся закрывающих скобок для контура FOR

Смежные вопросы