특수 문자와 함께 일괄 에코 사용
이것은 정말 쉬울 지 모르지만 인터넷을 통해 답이 없었습니다. 일괄 처리를 통해 XML 줄을 파일에 에코하고 싶지만 리디렉션에 대한 XML 닫는 태그 ">"를 잘못 이해합니다. 라인은 다음과 같습니다.
echo <?xml version="1.0" encoding="utf-8" ?> > myfile.xml
특수 문자열을 해석하지 않도록 배치 파서에 힌트를 제공하는 방법이 있습니까? 큰 따옴표를 사용했지만 파일에도 씁니다! 파일은 echo 후 다음과 같아야합니다.
<?xml version="1.0" encoding="utf-8" ?>
다음을 사용하여 쉘 메타 문자를 이스케이프 할 수 있습니다 ^.
echo ^<?xml version="1.0" encoding="utf-8" ?^> > myfile.xml
이후 참고 echo인 쉘 내장 그렇게 단지 그들을 제거하는 따옴표 대신 인수가 출력을 인용, 인용에 관한 일반적인 규칙을 따르지 않습니다.
에코가있는 Windows에서 '>'와 같은 특수 문자를 사용하려면 그 앞에 특수 이스케이프 문자를 배치해야합니다.
예를 들어
echo A->B
'>'는 '^'로 이스케이프해야하므로 작동하지 않습니다.
echo A-^>B
이스케이프 시퀀스를 참조하십시오 .
기본 특수 문자 세트와 해당 이스케이프 시퀀스를 인쇄하는 짧은 배치 파일이 있습니다.
다른 방법 :
@echo off
for /f "useback delims=" %%_ in (%0) do (
if "%%_"=="___ATAD___" set $=
if defined $ echo(%%_
if "%%_"=="___DATA___" set $=1
)
pause
goto :eof
___DATA___
<?xml version="1.0" encoding="utf-8" ?>
<root>
<data id="1">
hello world
</data>
</root>
___ATAD___
rem #
rem #
한 가지 쉬운 해결책은 지연된 확장을 사용하는 것입니다. 특수 문자는 변경되지 않습니다.
set "line=<?xml version="1.0" encoding="utf-8" ?>"
setlocal EnableDelayedExpansion
(
echo !line!
) > myfile.xml
편집 : 또 다른 해결책은 사라지는 따옴표 를 사용하는 것 입니다.
이 기술은 따옴표를 사용하여 특수 문자를 인용합니다.
@echo off
setlocal EnableDelayedExpansion
set ""="
echo !"!<?xml version="1.0" encoding="utf-8" ?>
특수 문자 단계에서 선행 인용 부호가 !"!나머지 줄을 보존하므로 트릭이 작동 합니다 (다른 인용 부호가없는 경우).
그리고 지연된 확장 단계에서 !"!의지는 변수의 내용으로 대체됩니다 "(작은 따옴표는 법적 이름입니다!).
비활성화 된 지연 확장으로 작업하는 경우 FOR /F대신 루프를 사용할 수 있습니다 .
for /f %%^" in ("""") do echo(%%~" <?xml version="1.0" encoding="utf-8" ?>
그러나 약간 짜증나는 것처럼 보이므로 매크로를 만들 수도 있습니다.
set "print=for /f %%^" in ("""") do echo(%%~""
%print%<?xml version="1.0" encoding="utf-8" ?>
%print% Special characters like &|<>^ works now without escaping
>문자 를 출력하는 방법 은 ^이스케이프 문자 를 앞에 추가하는 것입니다 .
echo ^>
간단히 인쇄됩니다
>
Joey의 대답은 저에게 효과가 없었습니다. 실행 후
echo ^<?xml version="1.0" encoding="utf-8" ?^> > myfile.xml
이 오류 bash : 예기치 않은 토큰 '>'근처 구문 오류가 있습니다.
이 솔루션은 저에게 효과적이었습니다.
echo "<?xml version=\"1.0\" encoding=\"utf-8\">" > myfile.txt
참조 http://www.robvanderwoude.com/escapechars.php
작은 따옴표를 사용하지 않는 이유는 무엇입니까?
echo '<?xml version="1.0" encoding="utf-8" ?>'
산출
<?xml version="1.0" encoding="utf-8" ?>
참고 URL : https://stackoverflow.com/questions/7308586/using-batch-echo-with-special-characters
'Program Club' 카테고리의 다른 글
| Python이 UCS-2 또는 UCS-4로 컴파일되었는지 확인하는 방법은 무엇입니까? (0) | 2020.11.29 |
|---|---|
| 브라우저가 비공개 브라우징 모드를 사용 중인지 감지 (0) | 2020.11.29 |
| 최종 ArrayList의 의미는 무엇입니까? (0) | 2020.11.29 |
| rem은 CSS에서 em과 어떻게 다릅니 까? (0) | 2020.11.29 |
| Android N 디스플레이 크기가 작음보다 크게 설정된 경우 "캔버스 : 너무 큰 비트 맵을 그리려고합니다." (0) | 2020.11.29 |