如何在不换行的情况下打印单个空格字符?

时间:2019-03-31 08:38:33

标签: batch-file

我只想打印一个空格字符( ),而不使用批处理文件换行。

rem try to echo single space character with `echo|set /P= `
echo|set /P= 

但是,这不会打印任何字符。

2 个答案:

答案 0 :(得分:2)

这取决于您的具体问题。 您只需要在屏幕上显示单个空格还是需要将其放入文件中?

只显示它可以用set / p解决,显示任何字符后跟一个退格键和一个空格。

要将单个空格放入文件中,要复杂一些。

@echo
setlocal EnableDelayedExpansion
call :createSub
call :echoWithoutLinefeed "=hello"
call :echoWithoutLinefeed " world"
exit /b

:echoWithoutLinefeed
> txt.tmp (echo(%~1!sub!)
copy txt.tmp /a txt2.tmp /b > nul
type txt2.tmp
del txt.tmp txt2.tmp
exit /b

:createSub
copy nul sub.tmp /a > nul
for /F %%a in (sub.tmp) DO (
   set "sub=%%a"
)
del sub.tmp
exit /b

Output text without linefeed, even with leading space or equal sign

答案 1 :(得分:2)

您可以创建一个或几个仅包含空格且末尾没有LineFeed的文本文件,然后以您希望的任何方式使用它。例如,在set /Pecho命令之前,将其显示在屏幕或文件中,等等。

@echo off
setlocal

call :CreateSpaces 3 5
type Spaces3.txt
set /P "=After 3 spaces" < NUL
type Spaces5.txt
set /P "=After 5 spaces" < NUL
echo   After 2 spaces
goto :EOF


:CreateSpaces
setlocal EnableDelayedExpansion
:loop
if "%~1" equ "" del Spaces.tmp & exit /B
set "Spaces="
for /L %%i in (1,1,%~1) do set "Spaces= !Spaces!"
for %%X in (^"^
% Do NOT remove this line %
^") do set /P "=X%%~X%Spaces%" < NUL > Spaces.tmp
findstr /V "X" Spaces.tmp > Spaces%1.txt
shift
goto loop