我正在创建一个游戏。当玩家按下A或D时,角色会移动。我的问题是:如何为这些变量批量添加空格?我有这段代码可以为玩家和敌人设置空白变量:
set right=
set left=
set leften=
set righten=
答案 0 :(得分:1)
set "right= "
在set
字符串命令中使用引号总是一个好主意。
使用高级技术进行演示...
@ECHO OFF
SETLOCAL
:: a variable with many spaces
SET "spaces= "
SET "myvar="
ECHO Hello%myvar%World
CALL :addspaces myvar 2
ECHO Hello%myvar%World
CALL :addspaces myvar 3
ECHO Hello%myvar%World
SET "mynewvar=Another"
ECHO %mynewvar%Spaces
CALL :addspaces mynewvar 3
ECHO %mynewvar%Spaces
ECHO ----------------Another method --------
SET "myvar="
ECHO Another%myvar%method
CALL :addchars myvar 2
ECHO Another%myvar%method
CALL :addchars myvar 3 x
ECHO Another%myvar%method
SET "mynewvar=Batch is "
ECHO %mynewvar%easy
CALL :addchars mynewvar 13 "so "
ECHO %mynewvar%easy
PAUSE
GOTO :eof
:: To variable name %1, add %2 spaces
:addspaces
CALL SET "%1=%%%1%%%%spaces:~-%2%%"
GOTO :eof
:: To variable name %1, add %2 of %3;spaces if %3 is missing
:addchars
FOR /L %%Z IN (1,1,%2) DO IF "%~3"=="" (CALL SET "%1=%%%1%% ") ELSE (CALL SET "%1=%%%1%%%~3")
GOTO :eof
这两个子例程需要说明。
由于cmd
的运行方式,在:addspaces
例程中,set
被CALL
赋值,并且在执行之前进行以下替换-从左向左读取对
设置“%1 = %%% 1 %%%% spaces:〜-%2 %%”
首先,将参数值替换为%1 ..%9
设置“
parameter1
= %%parameter1
%%%% spaces:〜-parameter2
%%”
接下来,观察转义序列,%
转义%
设置“ parameter1 =
%
parameter1%%
空格:〜-parameter2%
”
执行此命令后,其重新解析为
设置“ parameter1 = 参数1的内容%spaces:〜*** parameter2 *%的内容”
第二个例程是另一种方法,使用了相同的解析技巧,但是这次添加了第三个参数,该参数可以是字符或字符串,如果要重复的字符串包含分隔符(如空格),则它必须为{{ 1}}。