Batch file 为变量指定单个空格

Batch file 为变量指定单个空格,batch-file,cmd,Batch File,Cmd,所以我想要一个变量,基本上是一个空格或任何空字符。这将允许我显示一个空表,例如: ######### # # # # # # ######### 但我能得到的只是: ######### ## ## ## ######### 有什么特殊的角色可以满足我的需要吗?我四处看了看,发现可以给变量赋值BackSpace,但就是这样。也许我不擅长搜索,但我找不到解决方案。尝试更新的代码,这将完成所需的任务 @echo off set a=###### set b=#

所以我想要一个变量,基本上是一个空格或任何空字符。这将允许我显示一个空表,例如:

#########
#       #
#       #
#       #
#########
但我能得到的只是:

#########
##
##
##
#########

有什么特殊的角色可以满足我的需要吗?我四处看了看,发现可以给变量赋值BackSpace,但就是这样。也许我不擅长搜索,但我找不到解决方案。

尝试更新的代码,这将完成所需的任务

@echo off
set a=######
set b=#
set "c= "
echo %a%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %a%
pause
如果您想要一个更大的表,那么需要一点时间来输入,所以我们可以使用循环

试试下面的代码

@echo off
set a=######
set b=#
set "c= "
for /L %%j in (1,1,1) do (
echo %a%
for /L %%i in (1, 1, 5) do ( echo %b%%c%%c%%c%%c%%b%)
echo %a%
)
pause

尝试更新的代码,它将执行所需的操作

@echo off
set a=######
set b=#
set "c= "
echo %a%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %b%%c%%c%%c%%c%%b%
echo %a%
pause
如果您想要一个更大的表,那么需要一点时间来输入,所以我们可以使用循环

试试下面的代码

@echo off
set a=######
set b=#
set "c= "
for /L %%j in (1,1,1) do (
echo %a%
for /L %%i in (1, 1, 5) do ( echo %b%%c%%c%%c%%c%%b%)
echo %a%
)
pause

需要对变量进行分隔。这可以通过使用引号来完成

SET "ASPACE= "

需要对变量进行分隔。这可以通过使用引号来完成

SET "ASPACE= "

您可以使用来实现这一点

set "x= "

您可以使用来实现这一点

set "x= "
set/p使用前导空格。这能满足你的需要吗

@echo off
setlocal enabledelayedexpansion

set "x=" 
for /L %%i in (1, 1, 12) do set "x=!x! " 
echo ##############
echo #%x%#
echo #%x%#
echo ##############
这将在回显之前组合空格字符串

备选方案:

@echo off
set "x=                                     "
echo #%x:~0,12%#
这将从一长串空格中提取所需长度的子字符串,速度应该快得多

如果您想变得更灵活:

@echo off
setlocal enabledelayedexpansion

set "spaces=                                           " 
set "border=###########################################"
set len=12

echo #!border:~0,%len%!#
echo #!spaces:~0,%len%!#
echo #!spaces:~0,3!Hello.!spaces:~0,3!#
echo #!spaces:~0,%len%!#
echo #!border:~0,%len%!#
set/p使用前导空格。这能满足你的需要吗

@echo off
setlocal enabledelayedexpansion

set "x=" 
for /L %%i in (1, 1, 12) do set "x=!x! " 
echo ##############
echo #%x%#
echo #%x%#
echo ##############
这将在回显之前组合空格字符串

备选方案:

@echo off
set "x=                                     "
echo #%x:~0,12%#
这将从一长串空格中提取所需长度的子字符串,速度应该快得多

如果您想变得更灵活:

@echo off
setlocal enabledelayedexpansion

set "spaces=                                           " 
set "border=###########################################"
set len=12

echo #!border:~0,%len%!#
echo #!spaces:~0,%len%!#
echo #!spaces:~0,3!Hello.!spaces:~0,3!#
echo #!spaces:~0,%len%!#
echo #!border:~0,%len%!#

这将起作用,但我需要分配每个字符,因此have不适合我的需要。@Hoffs尝试更新的代码,将每个字符分配给变量以满足您的要求。这将起作用,但我需要分配每个字符,因此have不适合我的需要。@Hoffs尝试更新的代码,将每个字符分配给一个变量以满足您的要求,是吗@carton32 set x=echo | set/p=for/L%%i在1,1,12中执行echo | set/p=%x%echo | set/p=i仍然得到相同的结果:是吗@carton32 set x=echo | set/p=for/L%%i in 1,1,12做echo | set/p=%x%echo | set/p=i仍然得到相同的结果:但它仍然不起作用@Liturgist。这是我的代码:我得到的结果仍然是请将代码放入Stackoverflow。我无法访问pastebin.com,但@Liturgist仍然无法使用。这是我的代码:我得到的结果仍然是请将代码放入Stackoverflow。我无法访问pastebin.com。