다음 배치 프로그램을 사용하여 내 문제를 표시 할 수 있습니다.
echo first param: %1 third param: %3
echo '%2'
내 목표는 param2에 대한 다음 출력을 얻는 것입니다 (마지막 매개 변수로 조금 더 쉬울 것이라는 것을 알고 있지만 필요한 것은 아닙니다).
'<body><p style="font-familiy:Arial,Cascadia">MyText</p></body>'
내 질문은 두 번째 매개 변수가 여러 매개 변수로 해석되지 않도록 올바르게 호출하거나 cmd 코드를 변경하는 방법입니다.
백 슬래시로 큰 따옴표를 이스케이프하면 다음과 같습니다.
demo p1 "<body><p style=\"font-family:Arial,Cascadia\">MyText</p></body>" p3
param2의 출력은 다음과 같습니다.
'' "<p style ="font-family : Arial '
나머지 HTML 코드는 param3에 있습니다.
두 번째 시도는 이중 따옴표로 탈출하는 것이 었습니다.
demo p1 "<body><p style=""font-family:Arial,Cascadia"">MyText</p></body>" p3
큰 따옴표가 전혀 변경되지 않은 param2에 대해 다음과 같은 출력이 생성됩니다.
"'<body><p style=""font-family:Arial,Cascadia"">MyText</p></body>'"
다음과 같이 ""에서 "로 대체하여 원하는 출력을 얻을 수있었습니다.
set x=%2
echo '%x:""="%'
이것이 권장되는 방법인지 더 쉬운 방법이 있는지 궁금합니다 . 이 주제에 대해 https://www.robvanderwoude.com/escapechars.php 및 http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by- 에서 많이 읽었습니다 . a-windows-program / 가장 자주 인용되었지만 안타깝게도 어느 쪽도 도움이되지 않았습니다.
이미 언급했듯이 큰 따옴표 만 전체 인수를 이스케이프하는 데 사용할 수 있지만 따옴표 자체는 인수 내에서 이스케이프 할 수 없습니다.
인수에 큰 따옴표를 계속 사용해야한다면 큰 따옴표가 최상의 솔루션 중 하나 인 것 같습니다.
그러나 인수를 안전하게 가져오고 처리하려면 지연된 확장 콘텐츠가 더 이상 파싱되지 않기 때문에 지연된 확장으로 전환해야합니다 (확장 률과는 반대로).
set "arg1=%~1"
set "arg2=%~2"
..
setlocal EnableDelayedExpansion
set "arg1=!arg1:""="!"
set "arg2=!arg2:""="!"
echo !arg1! !arg2!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다