batch-file - 在批处理中,如何为变量添加空格?
问题描述
我正在创建一个游戏。当玩家按下 A 或 D 时,角色会移动。我的问题是:如何为这些变量批量添加空格?我有这段代码为玩家和敌人设置空白变量:
set right=
set left=
set leften=
set righten=
解决方案
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
了 ed 和以下替换 - 从左到右读取
设置“%1=%%%1%%%%空格:~-%2%%”
首先,将参数值替换为 %1..%9
设置“
parameter1
=%%parameter1
%%%%空格:~-parameter2
%%”
接下来,观察逃逸序列,%
逃逸%
设置“参数1=
%
参数1%%
空格:~-参数2%
”
当这个命令被执行时,它被重新解析为
设置“parameter1 = parameter1 %spaces 的内容:~*contents of **parameter2*%”
第二个例程是另一种方法,使用相同的解析技巧,但这次添加第三个参数,可能是字符或字符串,如果要重复的字符串包含像空格这样的分隔符,那么它必须是"quoted"
.
推荐阅读
- c# - 如何动态提供静态文件?
- java - 休眠多个表的一对多映射
- machine-learning - 机器学习期间 CPU 和 GPU 仅运行 10-15% 左右,训练非常慢
- mongodb - Mongodb 不会使用游标检索具有 200 万条记录的集合中的所有文档
- angular - Angular:可以从特定组件查询所有 DOM 的元素吗?
- spring - 圆形视图路径[问候]
- java - React Native:无法从 '15' 确定 java 版本
- java - 保持 SCDF 中的计划作业执行,直到上一个作业执行完成
- javascript - 如何从nodejs后端检索图像以做出反应
- ios - Pickerview 显示两边的值