대답이 작동한다는 착각에도 불구하고 사실은 일반적인 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
마치 cd
7 개의 모든 인수를 하나의 논리적 인수로 결합하여 비슷한 것을 수행 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