일괄 처리 CMD에서^캐럿 이스케이프가 작동하는 방식을 이해하려고합니다.큰 따옴표 묶음 문자열 redux
'txt.txt" DIR *.*"' is not recognized as an internal or external command,
operable program or batch file.
:
CMD.EXE "/C > ^"c:\my text.txt^" DIR C:\*.*"
대신 내가 오류를 얻을 : "내 text.txt를 \ C"나는 CMD 창에서이 줄을 입력 한 말을하자, 나는 그것을 위해 DIR 목록을 보내 기대 나는이 같은 간단한 할 경우
ECHO "^"^""
Expected: """"
Actual : "^"""
을 나는 두 번과 같이 인용하려고해도 :
ECHO " "" "" "
Expected: " " " "
Actual : " "" "" "
누군가가 어떻게 작동하는지 그리고 신뢰할 수있는 방법은 명령 줄에서 큰 따옴표를 벗어나는 것일 수 있습니까?
감사합니다.
추가 예 :
않는 이유는이 작품 :
cmd.exe "/C sqlcmd.exe -S.\SQLEXPRESS -E -Q"select suser_name()" > "c:\temp\test 1.txt""
그러나 이것은 오류가 있습니다. "지정된 경로를 찾을 수 없습니다" txt 파일을 만들지 않습니다.
cmd.exe "/C "sqlcmd.exe" -S.\SQLEXPRESS -E -Q"select suser_name()" > "c:\temp\test 1.txt""
이 경우에는 필요하지 않지만 sqlcmd.exe 명령을 따옴표로 묶으려면 어떻게해야합니까?
또한 즉,
cmd.exe /C "sqlcmd.exe" -S.\SQLEXPRESS -E -Q"select suser_name()" > "c:\temp\test 1.txt"
다시 한번 감사, 같은 결과 전체 라인에서 따옴표를 제거했습니다.
답장을 보내 주셔서 감사합니다. 코멘트가 제한된 형식을 허용하기 때문에 위의 추가 예제를 추가했습니다. 나는 당신의 제안을 사용하려했지만 여전히 운이 없다. –
@ Neilw - 나는 내 대답에서 코드를 테스트했고, 모두 작동했다 (나는'setlocal enableDelayedExpansion'을 포함하는 것을 잊어 버렸다 - 편집이 이루어졌다). 수정 된 답변에서 더 복잡한 명령을 수행 할 기회가 없었습니다. – dbenham
@ Neilw - 네, 업데이트 된 질문에 대한 해결책이 있다고 생각합니다. – dbenham