Bash로 작업 할 때 다음과 같이 한 명령의 출력을 다른 명령에 넣을 수 있습니다.
my_command `echo Test`
다음과 같을 것입니다.
my_command Test
(분명히 이것은 비실용적 인 예일뿐입니다.)
Batch에서 똑같은 일을 할 수 있는지 궁금합니다.
Bash로 작업 할 때 다음과 같이 한 명령의 출력을 다른 명령에 넣을 수 있습니다.
my_command `echo Test`
다음과 같을 것입니다.
my_command Test
(분명히 이것은 비실용적 인 예일뿐입니다.)
Batch에서 똑같은 일을 할 수 있는지 궁금합니다.
답변:
먼저 출력을 파일로 리디렉션하면됩니다. 예를 들면 :
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
for /f
변형이 훨씬 더 좋습니다.
%random%
cmd.exe 스크립트를 다음 for /f
명령 과 함께 사용하여 유사한 기능을 얻을 수 있습니다 .
for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
예, 그것은 다소 불명확하지만 (가장 적게 말하면) 거기에 있습니다.
for /?
피투성이의 세부 사항을 참조 하십시오.
사이드 노트 : echo
" for /f
"명령 에서 백틱 안에 " " 를 사용 하는 것은에 대한 내부 명령 cmd.exe /c echo Test
이기 때문에 " "를 사용하여 수행해야한다고 생각 했지만 더 자연스러운 방식으로 작동합니다. Windows 배치 스크립트는 항상 저를 놀라게합니다 (하지만 일반적으로 좋은 방식은 아닙니다).echo
cmd.exe
system()
그것이 어떤 경우에 쉘을 시작하지만 .NET 년대 이후, IIRC, 괜찮다고 Process.Start
명시 적으로 요구 쉘 호출합니다. 그런 것, iirc. 어쨌든, 나는 이것이 받아 들여진 것보다 더 나은 대답이라고 생각합니다 :-)
for
아프지 않고 문제를 혼동하는 옵션 . 이건 어떨까요 :for /f %%a in ('"echo Test"') do my_command %%a
tokens=*
중요합니다. 그렇지 않고 명령 결과에 공백이 포함 된 경우 첫 번째 단어 만 출력됩니다. 프롬프트에서 다음을 실행하십시오 for /f %a in ('"echo foo bar"') do echo "%a"
.. 인쇄 "foo"
됩니다.
아마도 나는 표준 for /f
방법 의 구문을 망쳐 놓고 있을지도 모르지만 , &&와 | 의 한계에서 백틱 내에서 for /f
문제가 발생합니다. 임의의 복잡성 명령을 처리하기 위해 평소에서 약간의 수정이 가능합니다.
SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling
for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a
전체 및 복잡한 명령을 변수에 먼저 넣은 다음 복잡한 명령을 for 루프의 한계에 직접 넣는 대신 한계에 변수에 대한 참조를 넣으면 구문 해석 문제를 피할 수 있습니다. 현재 VV
위의 예 에서 변수로 설정 한 정확한 명령을 사용 된 위치에 복사 %VV%
하면 구문 오류가 발생합니다.