Как я могу напечатать один пробел без новой строки? - PullRequest
2 голосов
/ 31 марта 2019

Я хочу напечатать только пробел ( ), без новой строки, используя пакетный файл.

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

Однако этот символ не печатается.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2019

Вы можете создать один или несколько текстовых файлов, которые просто содержат пробелы без LineFeed в конце, а затем использовать его / их по своему усмотрению. Например, перед командами set /P или echo, чтобы показать его на экране или в файле и т. Д. *

@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
2 голосов
/ 31 марта 2019

Это зависит от вашей конкретной проблемы.Вам нужно только показать один пробел на экране или вам нужно поместить его в файл?

Показ только, что это может быть решено с помощью 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...