如何在此行添加 space?
How do I add a space on this line?
我正在制作域解析器,但我不喜欢文本在 window 边框处的方式。该行是 set /p domainname=Enter Domain Name^> %ESC%[92m
我想在 Enter Domain Name>
之前添加一个 space
这是它的样子
所以它没有卡在 window 边框上,这样看起来会更好看。我该怎么做?我还没有找到任何关于如何解决这个问题的信息。
set /p
去掉提示字符串开头的所有空白字符,所以即使提示字符串被引号也不会起作用。诀窍是写一些 non-whitespace 字符然后 overwrite it with CR
@echo off
setlocal EnableExtensions EnableDelayedExpansion
rem Get CR character
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
set /p "domainname=x!CR! Enter Domain Name > %ESC%[92m"
echo %domainname%
作为替代方案,您可以使用 prompt 技术来显示任何文本消息(最多 511 个字符),而不必担心前导白色 space 字符。
它的工作原理如下:
set "prompt=Your text message"
cmd /d /k <nul
set /p "myVar="
将其放入可重复使用的函数中:
@echo off
setlocal EnableExtensions
call :getInput domainname " Enter Domain Name > %ESC%[92m"
echo domainname is [%domainname%]
pause
exit /b
:getInput <inputVar> ["Message String"]
setlocal DisableDelayedExpansion
set "Msg=%~2"
if defined Msg (
REM For prompt strings, $ is an escape character so it should be escaped with another one.
set "prompt=%Msg:$=$$%"
"%COMSPEC%" /d /k <nul
)
endlocal
set /p "%~1="
exit /b
我正在制作域解析器,但我不喜欢文本在 window 边框处的方式。该行是 set /p domainname=Enter Domain Name^> %ESC%[92m
我想在 Enter Domain Name>
这是它的样子
所以它没有卡在 window 边框上,这样看起来会更好看。我该怎么做?我还没有找到任何关于如何解决这个问题的信息。
set /p
去掉提示字符串开头的所有空白字符,所以即使提示字符串被引号也不会起作用。诀窍是写一些 non-whitespace 字符然后 overwrite it with CR
@echo off
setlocal EnableExtensions EnableDelayedExpansion
rem Get CR character
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
set /p "domainname=x!CR! Enter Domain Name > %ESC%[92m"
echo %domainname%
作为替代方案,您可以使用 prompt 技术来显示任何文本消息(最多 511 个字符),而不必担心前导白色 space 字符。
它的工作原理如下:
set "prompt=Your text message"
cmd /d /k <nul
set /p "myVar="
将其放入可重复使用的函数中:
@echo off
setlocal EnableExtensions
call :getInput domainname " Enter Domain Name > %ESC%[92m"
echo domainname is [%domainname%]
pause
exit /b
:getInput <inputVar> ["Message String"]
setlocal DisableDelayedExpansion
set "Msg=%~2"
if defined Msg (
REM For prompt strings, $ is an escape character so it should be escaped with another one.
set "prompt=%Msg:$=$$%"
"%COMSPEC%" /d /k <nul
)
endlocal
set /p "%~1="
exit /b