Windows 배치 : 줄 바꿈없이 에코


231

echo -n출력이 끝날 때 줄 바꿈을 억제하는 Linux 셸 명령과 동등한 Windows 배치는 무엇입니까 ?

아이디어는 루프 내에서 같은 줄에 쓰는 것입니다.



2
이것은 거의 나를 미치게했다. 나는 echo걸릴 수 있었다는 것을 알았지 -ncmd.exe그것은 단지 작동하지 않을 것이다 ^^
panny

11
@panny-일반적인 이름에도 불구하고 echo는 Windows와 Posix간에 동일한 명령이 아닙니다. nslookup과 동일하며 다른 옵션이 있습니다. 따라서 Windows와 관련된 질문의 맥락에서 "알 echo수 있습니다 -n" 라는 주석 이 잘못되었습니다.
user66001 2018 년

답변:


236

개행없이 에코 set/p매개 변수를 사용하여 :

C:\> echo Hello World
Hello World

C:\> echo|set /p="Hello World"
Hello World
C:\>

출처


86
파이프는 두 개의 추가 cmd 작업을 생성하므로 속도가 매우 느립니다 <nul set /p =Hello. set /p등호를 첫 문자 나 공백 / 탭으로 에코 할 수 없습니다.
jeb

11
내 시스템에서 거의 15 배 더 빠릅니다.
jeb

28
"Hello World"주위에 따옴표를 추가하여 d 뒤에 불필요한 공간을 방지하십시오.
Brian

13
경고 : ERRORLEVEL이 1로 변경됩니다. @xmechanix의 답변을 참조하십시오.
CoperNick

6
@ user246694 < nulNUL장치 에서 리디렉션입니다 . 아무 것도 포함되어 있지 않지만 set /p사용자 입력 대기를 중지 하기에 충분합니다.
jeb

100

사용 : echo | set /p=또는 <NUL set /p=개행을 억제하기 위해 둘 다 작동합니다.

그러나 set /p=변수 이름을 지정하지 않고 설정하면 ERRORLEVEL이 1로 설정되므로 ERRORLEVEL을 확인할 때 고급 스크립트를 작성할 때 매우 위험 할 수 있습니다 .

더 좋은 방법은 더미 변수 이름을 다음과 같이 사용하는 것입니다.
echo | set /p dummyName=Hello World

이렇게하면 어려운 방법을 찾아야했을 때 배경에서 교활한 물건을 사용하지 않고도 원하는 것을 정확하게 얻을 수 있지만 파이프 버전에서만 작동합니다. <NUL set /p dummyName=Hello여전히 ERRORLEVEL을 1로 올립니다.


20
경고 :이 명령은 ERRORLEVEL을 0으로 설정합니다. ERRORLEVEL이 0보다 크면 ERRORLEVEL을 0으로 변경합니다. 고급 스크립트를 작성할 때 위험 할 수도 있습니다. (그러나 답변을
얻으려면

따라서 기본적으로 이러한 환경에서 환경을 손상시키지 않으려면 IF ERRORLEVEL == 0 (...) ELSE (...)가 필요합니다. esh.
SilverbackNet

28

간단한 SET / P 방법에는 Windows 버전마다 약간의 제한이 있습니다.

  • 선행 인용 부호가 제거 될 수 있습니다

  • 선행 공백이 제거 될 수 있습니다.

  • 선행 =구문 오류가 발생합니다.

자세한 내용은 http://www.dostips.com/forum/viewtopic.php?f=3&t=4209 를 참조하십시오.

jeb는 선행 공간이 있더라도 줄 바꿈없이 출력 텍스트 의 대부분의 문제를 해결하는 영리한 솔루션을 게시 했습니다. XP부터. 참고:writeInitialize 메서드에는 사이트에 제대로 게시되지 않을 수있는 문자열 리터럴이 포함되어 있습니다. 문자 순서가 무엇인지 설명하는 설명이 포함되어 있습니다.

:write:writeVar방법은 번잡 한 최고의 문자가 포함 된 문자열 만이 젭의 COPY 방법의 내 수정 된 버전을 사용하여 작성되도록 최적화되어 있습니다. 까다 롭지 않은 문자열은 더 간단하고 빠른 SET / P 방법을 사용하여 작성됩니다.

@echo off
setlocal disableDelayedExpansion
call :writeInitialize
call :write "=hello"
call :write " world!%$write.sub%OK!"
echo(
setlocal enableDelayedExpansion
set lf=^


set "str= hello!lf!world^!!!$write.sub!hello!lf!world"
echo(
echo str=!str!
echo(
call :write "str="
call :writeVar str
echo(
exit /b

:write  Str
::
:: Write the literal string Str to stdout without a terminating
:: carriage return or line feed. Enclosing quotes are stripped.
::
:: This routine works by calling :writeVar
::
setlocal disableDelayedExpansion
set "str=%~1"
call :writeVar str
exit /b


:writeVar  StrVar
::
:: Writes the value of variable StrVar to stdout without a terminating
:: carriage return or line feed.
::
:: The routine relies on variables defined by :writeInitialize. If the
:: variables are not yet defined, then it calls :writeInitialize to
:: temporarily define them. Performance can be improved by explicitly
:: calling :writeInitialize once before the first call to :writeVar
::
if not defined %~1 exit /b
setlocal enableDelayedExpansion
if not defined $write.sub call :writeInitialize
set $write.special=1
if "!%~1:~0,1!" equ "^!" set "$write.special="
for /f delims^=^ eol^= %%A in ("!%~1:~0,1!") do (
  if "%%A" neq "=" if "!$write.problemChars:%%A=!" equ "!$write.problemChars!" set "$write.special="
)
if not defined $write.special (
  <nul set /p "=!%~1!"
  exit /b
)
>"%$write.temp%_1.txt" (echo !str!!$write.sub!)
copy "%$write.temp%_1.txt" /a "%$write.temp%_2.txt" /b >nul
type "%$write.temp%_2.txt"
del "%$write.temp%_1.txt" "%$write.temp%_2.txt"
set "str2=!str:*%$write.sub%=%$write.sub%!"
if "!str2!" neq "!str!" <nul set /p "=!str2!"
exit /b


:writeInitialize
::
:: Defines 3 variables needed by the :write and :writeVar routines
::
::   $write.temp - specifies a base path for temporary files
::
::   $write.sub  - contains the SUB character, also known as <CTRL-Z> or 0x1A
::
::   $write.problemChars - list of characters that cause problems for SET /P
::      <carriageReturn> <formFeed> <space> <tab> <0xFF> <equal> <quote>
::      Note that <lineFeed> and <equal> also causes problems, but are handled elsewhere
::
set "$write.temp=%temp%\writeTemp%random%"
copy nul "%$write.temp%.txt" /a >nul
for /f "usebackq" %%A in ("%$write.temp%.txt") do set "$write.sub=%%A"
del "%$write.temp%.txt"
for /f %%A in ('copy /z "%~f0" nul') do for /f %%B in ('cls') do (
  set "$write.problemChars=%%A%%B    ""
  REM the characters after %%B above should be <space> <tab> <0xFF>
)
exit /b

1
모든 캐릭터를 다룰 수있는 매우 강력한 솔루션을 만나서 반갑습니다
jeb

2
컴퓨터가 인터넷에 네트워크에 연결되어 있으면 대략 많은 양의 배치 코드를 사용하여 컴퓨터에서 파이썬 또는 기타 다른 것을 다운로드하여 설치하여 배치를 제거 할 수 있다고 지적하고 싶습니다. 배치는 재미 있지만 문자열 능력은 주말 도전에 가장 좋습니다.
n611x007

6 번 줄의 @dbenham "echo ("는 기능적으로 "echo"와 동일합니다.
R

2
@SkipR은 - 네, 기능적으로 동일하다 ECHO., 제외하고 ECHO.모호한 상황에서 실패 할 수 있습니다 . 모호한 상황에서도 실패 할 수있는 다른 형태가 많이 있습니다. 항상 작동하는 유일한 것은 ECHO(입니다.
dbenham

10

@xmechanix의 답변에 대한 부록으로 파일에 내용을 쓰는 것으로 나타났습니다.

echo | set /p dummyName=Hello World > somefile.txt

인쇄 된 문자열의 끝에 여분의 공간 이 추가됩니다. . 특히 새 줄 (다른 공백 문자)을 추가하지 않기 때문에 불편할 수 있습니다.

다행스럽게도 인쇄 할 문자열을 인용합니다. 예 :

echo | set /p dummyName="Hello World" > somefile.txt

끝에 줄 바꿈이나 공백 문자없이 문자열을 인쇄합니다.


5
World와 사이에 공백을 넣지 않으면 여분의 공간이 사라져야합니다 >.
aschipfl

@aschipfl 시험해 보았습니다.
Joan Bruguera

set 명령의 문서화되지 않은 기능인 Quoted variable Method는 일반적으로 모든 버전의 WIndows NT (및 리콜하면 9x)에서 작동하므로 접근 방식을 확인하는 방법입니다. 즉, 변수 이름을 따옴표로 묶은 값의 끝에 랩핑합니다. 이것은 Set / P에서도 마찬가지입니다.
Ben Personick

1
IE : 에코 | set / p "dummyName = Hello World"> somefile.txt
Ben Personick

2
@aschipfl 따옴표를 사용하지 않고 파이프를 사용하면 추가 공간이 나타납니다. xxd 우리가 예를 들어 볼 수 있도록 헥스 덤프 유틸리티입니다 set /p="abc"<nul|xxd -p표시 616263 반면, set /p=abc<nul|xxd -p제공61626320
barlop

9

SET / P에서 제거 된 공백에 대한 솔루션 :

트릭은 텍스트 편집기 에서 DOS 용으로 편집 할 수있는 백 스페이스 문자입니다 . 편집에서 작성하려면 ctrlP + ctrlH를 누르 십시오 . 여기에 붙여 넣을 수 있지만이 웹 페이지는 표시 할 수 없습니다. 메모장에서 볼 수 있습니다 (중앙에 흰색 원이있는 작은 검은 사각형처럼 작습니다)

그래서 당신은 이것을 작성합니다 :

<nul set /p=.9    Hello everyone

점은 임의의 문자 일 수 있습니다. SET / P에게 텍스트가 공백보다 먼저 시작되고 " Hello "가 아니라고 시작한다는 것을 알 수 있습니다 . " 9 "는 여기에 표시 할 수없는 백 스페이스 문자를 나타냅니다. 당신은 9 대신에 그것을 넣어야하며, " . "을 삭제하면 , 다음과 같은 결과를 얻게됩니다 :

    Hello Everyone

대신에:

Hello Everyone

나는 그것이 도움이되기를 바랍니다


2
Windows 7에서 작동한다는 것을 잊었습니다. 명령 줄에서는 작동하지 않으며 배치에서만 작동합니다. 문자를받지 못한 사람은 다음 예를 다운로드하십시오. pecm.com.sapo.pt/SET_with_backspace_char.txt
Pedro


... 그래서, 엄청나게 철저한 검색을 한 후에도 인터넷에서 이걸 찾지 못했습니다. 내가 실제로 무언가를 발견했을 때와 멍청한 행운에 의한 것일 수도 있습니다. 모르는 사람들을 위해 cmd 프롬프트를 레거시 모드로 설정하고 올바른 글꼴을 사용하면 제어 문자를 입력 할 수 있습니다. ...하지만 단순히 파일로 리디렉션하거나> con도 작동합니다. 진심으로. 이것을 정확히 명령 프롬프트에 붙여 넣으십시오 : "echo ← c◙◙ ○○ Harharhar !! ◙ ○○ ------------- ◙◙ ○○ 나는 최악입니다!? : '(○ ♪ ! ○ NOPE은 • ♪ ○ 나는 큰 Hazzah 르 OOP를 느낄 ◙◙ ○ 내가 programmeer 내 말 듣고 있어요 ... something.◙> 사기꾼! ".
브렌트 리튼 하우스

좋아, 나는 다른 사람보다 먼저 이것을 찾았기를 바란다. 그러나 이것은 유니 코드 코드 페이지에없는 것에 의존하는 것처럼 보인다. 시작하는 것을 변수 do chcp 437에 저장하고, 세트를 변수에 설정하거나, 출력 한 다음 다시 전환 할 수 있습니다 (그리고 여전히 출력되어야 함). 나는 아직도 놀고 있습니다.
브렌트 리튼 하우스

또한 ← c가 화면을 지우는 이유를 아는 사람이 있습니까?! 인터넷 어딘가에서 그 인스턴스를 찾을 수 없습니다. 두 문자 사이에 공백이있는 것처럼 보이지만 구체적으로 그 조합입니다. 다른 캐릭터의 경우 첫 번째 캐릭터를 제거하는 것 같습니다. 나는 ... 그것을 얻을하지 않습니다
브렌트 리튼 하우스에게

7

gnuwin32 ( coreutils 패키지) 에서 "tr"을 사용하여 줄 바꿈을 제거 할 수 있습니다

@echo off
set L=First line
echo %L% | tr -d "\r\n"
echo Second line
pause

그건 그렇고, 많은 스크립팅을하고 있다면 gnuwin32는 금광입니다.


또한 git bash 설치 하는 것이 좋습니다 . 그것은 gnuwin32와 같지 않으며 (따라서 금광 +1), 좋은 설정이며 시작 메뉴 버튼을 포함한 거의 모든 곳에서 마우스 오른쪽 버튼에 git-bash가 있습니다.
hakre

tr을 사용하여 마지막 공백 문자를 제거 할 수 trim있습니까?
panny

트림을 위해 sed를 사용하십시오 : sed -e "s / * $ //"
BearCode

@panny-trim이라는 posix / linux 유틸리티를 찾을 수 없습니다. 또한 \r, \n또는 \r\n(각각 OSX,하여 Posix 및 Windows의 새로운 라인) "공간"문자 수 없습니다.
user66001 2018 년

5

또 다른 방법은 -NoNewLine 매개 변수가있는 Powershell Write-Host를 사용 start /b하고이를 결합하고 배치와 동일한 기능을 제공하는 방법입니다.

NoNewLines.cmd

@ECHO OFF
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 1 - ';Write-Host -NoNewLine 'Result 2 - ';Write-Host -NoNewLine 'Result 3 - '"
PAUSE

산출

Result 1 - Result 2 - Result 3 - Press any key to continue . . .

아래의 내용은 약간 다르며 OP가 원하는 것처럼 정확하게 작동하지 않지만 각 결과가 카운터를 에뮬레이트하는 이전 결과를 덮어 쓰므로 흥미 롭습니다.

@ECHO OFF
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 1 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 2 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 3 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 4 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 5 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 6 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 7 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 8 - '"
start /b /wait powershell.exe -command "Write-Host -NoNewLine 'Result 9 - '"
PAUSE


2

어쩌면 이것은 당신이 찾고있는 것입니다, 그것은 오래된 학교 대본입니다 ... : P

set nl=^& echo. 
echo %nl%The%nl%new%nl%line%nl%is%nl%not%nl%apparent%nl%throughout%nl%text%nl%
echo only in prompt.
pause

아니면 새 줄에 쓰는 대신 현재 줄을 바꾸려고합니까? "."다음에 "% bs %"를 제거하여이를 실험 할 수 있습니다. "예제 메시지"뒤에 다른 "% bs %"를 띄워서 표시합니다.

for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "bs=%%a"
<nul set /p=.%bs%         Example message         %bs%
pause

나는 이것이 의도 한 것 이외의 목적으로 변수를 사용하기 때문에 정말로 흥미 롭습니다. 보시다시피 "% bs %"는 백 스페이스를 나타냅니다. 두 번째 "% bs %"는 백 스페이스를 사용하여 "예제 메시지"뒤에 공백을 추가하여 "예제 메시지"뒤에 실제로 보이는 문자를 추가하지 않고 "일시 정지 명령의 출력"을 분리합니다. 그러나 이는 정기적 인 백분율 기호로도 가능합니다.


2
나는이 set nl=^& echo.트릭을 어디에나 보았고 변수 이름이 잘못되었습니다. % nl %는 줄 바꿈 문자아닙니다 . 결국 줄 바꿈 이 끝날 때마다 새 명령을 실행 하므로 줄 바꿈 이 실행 됩니다. 당신은 그것을 작성하여 확인할 수 있습니다 . 당신 은 트릭을 공개 얻을 . 출력은 동일하지만 제안하는 이유가 아닙니다. &echo.echoecho "%nl%The%nl%new%nl%line%nl%is%nl%not%nl%apparent%nl%throughout%nl%text%nl%""& echo. The& echo. new& echo. line& echo. is& echo. not& echo. apparent& echo. throughout& echo. text& echo. "
cdlvcdlv

2

DIY cw.exe (콘솔 쓰기) 유틸리티

즉시 사용 가능한 기성품을 찾지 못하면 DIY를 할 수 있습니다. 이것으로cw 유틸리티를 사용하면 모든 종류의 문자를 사용할 수 있습니다. 적어도 그렇게 생각하고 싶습니다. 스트레스 테스트를 해주시고 알려주십시오.

도구

.NET 만 있으면됩니다 . 요즘 매우 일반적이다, 설치.

기재

일부 문자는 입력 / 복사하여 붙여 넣습니다.

단계

  1. .bat다음 내용으로 파일을 작성 하십시오.
/* >nul 2>&1

@echo off
setlocal

set exe=cw
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*csc.exe"') do set "csc=%%v"

"%csc%" -nologo -out:"%exe%.exe" "%~f0"

endlocal
exit /b %errorlevel%

*/

using System;

namespace cw {
    class Program {
        static void Main() {
            var exe = Environment.GetCommandLineArgs()[0];
            var rawCmd = Environment.CommandLine;
            var line = rawCmd.Remove(rawCmd.IndexOf(exe),exe.Length).TrimStart('"');
            line = line.Length < 2 ? "\r" : line.Substring(2) ;
            Console.Write(line);
        }
    }
}
  1. 그것을 실행하십시오.

  2. 이제 멋진 4KB 유틸리티가 있으므로를 삭제할 수 있습니다 .bat.

또는이 코드를 배치에 서브 루틴으로 삽입하고에 결과 .exe를 보내 배치 %temp%에 사용하고 완료되면 삭제할 수 있습니다.

사용하는 방법

줄 바꿈없이 무언가를 쓰려면 :
cw Whatever you want, even with "", but remember to escape ^|, ^^, ^&, etc. unless double-quoted, like in "| ^ &".

캐리지 리턴을 원할 경우 (줄의 시작 부분으로 이동)
cw

따라서 커맨드 라인에서 이것을 시도하십시오 :

for /l %a in (1,1,1000) do @(cw ^|&cw&cw /&cw&cw -&cw&cw \&cw)

나는 당신의 대답에 의해 영감을 만든 이동에 작은 도구 및 푸른 파이프 라인에 대한 동반 작업을. 파이프 된 stdout을 잡고 빌드에서 선택할 수 있도록 특정 형식으로 출력합니다. 감사합니다!
riezebosch

2

@arnep의 아이디어로 기능을 만들었습니다.

echo | set / p = "Hello World"

여기있어:

:SL (sameline)
echo|set /p=%1
exit /b

이것을 사용하면 call :SL "Hello There"
특별한 것이 없다는 것을 알고 있지만 여기에 게시 할 것이라고 생각하는 데 너무 오래 걸렸습니다.


1

샘플 1 : 작동하고 종료 코드 = 0을 생성합니다. 양호합니다. "."에 유의하십시오. , 반향 직후.

C : \ Users \ phife.dog \ gitrepos \ 1 \ repo_abc \ scripts #
@echo. | set / p JUNK_VAR = 이것은 Linux echo -n처럼 표시되는 메시지입니다 ... & echo % ERRORLEVEL %

이것은 Linux echo -n처럼 표시되는 메시지입니다 ... 0

샘플 2 : 이것은 작동 하지만 종료 코드 = 1을 생성합니다. 에코 후 "."가 부족하다는 점에 유의하십시오. 차이가있는 것 같습니다.

C : \ Users \ phife.dog \ gitrepos \ 1 \ repo_abc \ scripts #
@echo | set / p JUNK_VAR = 이것은 Linux echo -n처럼 표시되는 메시지입니다 ... & echo % ERRORLEVEL %

이것은 리눅스 에코 -n처럼 표시되는 메시지입니다 ... 1


1

이 질문에 대한 답변에서 영감을 얻어 진행률 값 (0-100 %)을 같은 줄에 계속 인쇄하는 간단한 카운터 배치 스크립트를 만들었습니다 (이전 줄을 덮어 씁니다). 어쩌면 이것은 비슷한 솔루션을 찾는 다른 사람들에게도 가치가있을 것입니다.

비고 : *인쇄 할 수없는 문자이므로 문자 인 [ Alt+ Numpad 0+ Numpad 8] 키 조합을 사용하여 입력해야합니다 backspace.

@ECHO OFF

FOR /L %%A in (0, 10, 100) DO (     
    ECHO|SET /P="****%%A%%"    
    CALL:Wait 1
)

GOTO:EOF

:Wait
SET /A "delay=%~1+1"
CALL PING 127.0.0.1 -n %delay% > NUL
GOTO:EOF

0

나는 그런 옵션이 없다고 생각합니다. 또는 이것을 시도 할 수 있습니다

set text=Hello
set text=%text% world
echo %text%

3
그래도 줄 바꿈이 인쇄됩니다.
René Nyffenegger

3
원하는만큼 동일한 변수를 연결하고 맨 끝에 만 에코 할 수 있습니다.
m0skit0

2
루프를 수행 할 때 또는 끝에서 인쇄해도 데이터가 보존되는지는 중요하지 않습니다. 각 루프마다 데이터를 연결 한 다음 루프가 끝나면 인쇄합니다. 결과는 같습니다.
m0skit0

9
그것은 않습니다 는 루프의 진행의 지표라면 문제.
gregseth

3
귀하는 귀하의 질문에 언급하지 않았거나 귀하의 질문의 어느 곳에서나이 행동을 요청하지 않았습니다.
m0skit0

0

set / p 명령을 사용하여 줄 바꿈을 억제 할 수 있습니다. set / p 명령은 공백을 인식하지 못하므로 점과 백 스페이스 문자를 사용하여 공백을 인식 할 수 있습니다. 또한 변수를 메모리로 사용하고 인쇄 할 내용을 저장하여 문장 대신 변수를 인쇄 할 수 있습니다. 예를 들면 다음과 같습니다.

@echo off
setlocal enabledelayedexpansion
for /f %%a in ('"prompt $H & for %%b in (1) do rem"') do (set "bs=%%a")
cls
set "var=Hello World! :)"
set "x=0"

:loop
set "display=!var:~%x%,1!"
<nul set /p "print=.%bs%%display%"
ping -n 1 localhost >nul
set /a "x=%x% + 1"
if "!var:~%x%,1!" == "" goto end
goto loop

:end
echo.
pause
exit

이런 식으로 줄 바꿈없이 무엇이든 인쇄 할 수 있습니다. 문자를 하나씩 인쇄하도록 프로그램을 만들었지 만 루프를 변경하여 문자 대신 단어를 사용할 수도 있습니다.

위 예제에서 "enabledelayedexpansion"을 사용하여 set / p 명령이 "!"를 인식하지 못합니다. 문자 대신 점을 인쇄합니다. 느낌표 "!"를 사용하지 않기를 바랍니다. ;)


-1

늦은 여기에 대답하지만, 발견 한 줄에 특수 문자를 쓸 필요가 사람을위한 dbenham 의 대답은 그 스크립트를 간단하게 사용하는 한계에서 (아마도 때문에 사용자 입력에) 중단 될 수 있습니다 너무 오래 (80 개) 라인에 대해 수하고 set /p, .bat 또는 .cmd를 컴파일 된 C ++ 또는 C- 언어 실행 파일과 쌍 cout또는 printf문자 로 연결하는 것이 가장 쉬운 방법 일 것입니다 . 이것은 OP처럼 분명히 진행률 표시 줄이나 문자를 사용하여 무언가를 표시하는 경우 한 줄에 여러 번 쉽게 쓸 수 있습니다.


@jiggunjer 확실합니까? printfWin-7 cmd"'printf' is not recognized as an internal or external command, operable program or batch file."
노래를 보내면

printf창 고유가 아닙니다. 이것은 Windows 질문입니다.
kayleeFrye_onDeck

1
@kayleeFrye_onDeck 나는 당신의 의견을 겨냥한 것으로 가정 jiggunjer , 내가 아니라; 내 질문에 C와 C ++이 형식화가 중요한 경우 쉘 명령에 대한 플랫폼 독립적 인 대안으로 사용될 수 있다고 제안합니다.
SeldomNeedy

1
아버지를 용서해주세요
kayleeFrye_onDeck

그러나 쉘에 대한 입력을 올바르게 구문 분석해야합니다. 예를 들어, 그러한 프로그램은 어떻게 따옴표를 인쇄합니까?
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.