대답이 작동한다는 착각에도 불구하고 사실은 일반적인 cmd 인수로 공백을 몰래 넣을 수 없다는 것입니다. 이것은 증명하기 쉽다 :
" echo %1"을 (를) 다른 이름으로 저장하십시오 test.bat. 이 배치 파일은 cmd가 전달하는 첫 번째 인수를 출력합니다.
이제 test.bat값을 %1로 설정 하여을 실행 하십시오 foo bar. ( foo와 사이에 공백 문자가 bar있습니다.)
몇 년 동안 시행 착오를 겪을 방법이 없다는 것을 깨달으 십시오 . 사람들은 사용을 피할 것을 제안 ^하지만 test.bat foo^ bar출력 하지는 않을 것이다 foo bar.
따라서 출력을 얻을 수있는 방법이 없으며 얻을 수있는 foo bar가장 가까운 것은 test.bat foo" "bar생산하는 foo" "bar또는 실행 test.bat "foo bar"하는 것 "foo bar"입니다.
이제 다른 답변이 이유 표시 작업에가 있기 때문입니다 cd수행 이 자신의의 통과 보통 인수의 행동 (평소 분기, 추가 분석 %1, %2, %3전형적인 배치 파일 등).
예를 들어, 독특한 명령을 고려하십시오.
cd c:\documents and settings \some folder with spaces
왜 작동합니까? 이로 인해 cd 자체가 7 개 가입 상응하는 뭔가하고 보통 하나의 논리 하나로 인수를. cmd 인수 전달 규범에 따르면 7 가지 인수가 있습니다.
c:\documents
and
settings
\some
folder
with
spaces
마치 cd7 개의 모든 인수를 하나의 논리적 인수로 결합하여 비슷한 것을 수행 array.join(" ")하여 경로를 생성 하는 것처럼 보입니다 .
c:\documents and settings \some folder with spaces
이 동작은 (및 다른 기능 들만 ) 특이합니다cd . 일반적인 인수 전달과는 아무런 관련이 없습니다.
실제로 cd다른 특징이 있습니다. 우리는 출력을 얻을 수 없다고 위에서 언급 foo bar했는가? 우리가 얻을 수있는 가장 가까운 출력은 다음을 실행하는 것입니다.
test.bat foo" "bar
을 생성 foo" "bar하거나
test.bat "foo bar"
을 생성 "foo bar"하거나
test.bat "foo "bar
을 생성 "foo "bar하거나
test.bat foo" bar"
을 생성 foo" bar"하거나
test.bat "foo b"ar
을 생성 "foo b"ar하거나
test.bat fo"o bar"
을 생성 fo"o bar"하거나
test.bat fo"o ba"r
을 생성 fo"o ba"r하거나
test.bat "fo"o" bar"
을 생성 "fo"o" bar"하거나
test.bat "f""o""o"" ""b""a""r":
을 생성 "f""o""o"" ""b""a""r"하거나 심지어
test.bat """"f"""o""""o"" ""ba"""r"""""""""":
생산합니다 """"f"""o""""o"" ""ba"""r"""""""""".
위의 모든 예제는 하나의 유사성을 가지고 있는데, 이는 문자를 잘라낸 foo bar후에 생성 "됩니다. cd저자는 이것을 깨달았을 것입니다 ... 우리가 받는 모든 것을 다듬어이 모든 명령이 작동하도록 cd하는 독특한 행동 을 추론한다면 :"
cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs