답변:
2000 년 이후 모든 Microsoft OS에서 다음과 같이 오늘날에도 여전히 좋습니다.
dir & echo foo
첫 번째 명령이 성공적으로 종료 된 경우에만 두 번째 명령을 실행하려면 다음을 수행하십시오.
dir && echo foo
한 줄에 여러 명령을 실행하는 단일 앰퍼샌드 (&) 구문은 Windows XP, Windows 2000 및 일부 이전 NT 버전으로 돌아갑니다. (여기서 한 사람의 의견에 따르면 4.0 이상)
이 페이지에서 아래로 스크롤 할 수있는 다른 점이 많이 있습니다.
교육 자료를 찾을 수있는 사람들을위한 과거 데이터가 이어집니다.
그 이전에 && 구문은 해당 기능이 Microsoft 명령 인터프리터에 추가되기 전에 쉘 대체 4DOS의 기능 일뿐이었습니다.
Windows 95, 98 및 ME에서는 파이프 문자를 대신 사용합니다.
dir | echo foo
MS-DOS 5.0 이상에서 일부 이전 Windows 및 NT 버전의 명령 인터프리터를 통해 (언급되지 않은) 명령 구분 기호는 문자 20 (Ctrl + T)이며 ^ T로 표시됩니다.
dir ^T echo foo
설명서에서 인용 한 내용 :
여러 명령 및 조건부 처리 기호 사용
조건부 처리 기호를 사용하여 단일 명령 줄 또는 스크립트에서 여러 명령을 실행할 수 있습니다. 조건부 처리 기호가있는 여러 명령을 실행하는 경우 조건부 처리 기호 오른쪽의 명령은 조건부 처리 기호 왼쪽의 명령 결과에 따라 작동합니다.
예를 들어, 이전 명령이 실패한 경우에만 명령을 실행할 수 있습니다. 또는 이전 명령이 성공한 경우에만 명령을 실행할 수 있습니다.
다음 표에 나열된 특수 문자를 사용하여 여러 명령을 전달할 수 있습니다.
& [...]
command1 & command2
하나의 명령 줄에서 여러 명령을 분리하는 데 사용합니다. Cmd.exe는 첫 번째 명령을 실행 한 다음 두 번째 명령을 실행합니다.
&& [...]
command1 && command2
기호 앞의 명령이 성공한 경우에만 && 다음에 명령을 실행하는 데 사용하십시오. Cmd.exe는 첫 번째 명령을 실행 한 다음 첫 번째 명령이 성공적으로 완료된 경우에만 두 번째 명령을 실행합니다.
|| [...]
command1 || command2
|| 다음 명령을 실행하는 데 사용하십시오. 앞의 명령이 || 실패합니다. Cmd.exe는 첫 번째 명령을 실행 한 다음 첫 번째 명령이 성공적으로 완료되지 않은 경우에만 두 번째 명령을 실행합니다 (오류 코드가 0보다 큰 경우).
( ) [...]
(command1 & command2)
여러 명령을 그룹화하거나 중첩하는 데 사용합니다.
; or ,
command1 parameter1;parameter2
명령 매개 변수를 분리하는 데 사용하십시오.
cmd /c "echo foo & echo bar"
.
vagrant up && vagrant ssh
Windows 10에서 따옴표없이 작동했습니다.
&
-비 동기화하고 병렬로 실행한다. 내가 &&
함께 사용했기 때문에 붙어 있었고 첫 번째 성공한 경우에만 계속됩니다!
&
는 명령을 비동기 또는 병렬로 만들지 않습니다. 완료 후command1 & command2
실행 됩니다. 성공 또는 실패 는 관련이 없습니다. command2
command1
command1
&
대한 배쉬 동일합니다 ;
(실행 명령)과 &&
의 배쉬 동일합니다 &&
(이전이 오류가 발생하지 않은 경우에만 실행되는 명령).
;
리눅스에서 본 적이 없다
;
은 첫 번째 명령을 실행하고 완료 될 때까지 기다렸다가 두 번째 명령을 실행하는 것을 의미합니다. &
즉, 첫 번째 명령을 실행하고 백그라운드로 놓고 두 번째 명령을 실행하는 것을 의미합니다. 따라서 두 프로그램이 동시에 시작됩니다. 이것들은 심볼을 결합하는 것이 아니라 첫 번째 명령의 마지막 심볼입니다. progname &
두 번째 명령없이 백그라운드에서 단일 명령을 시작할 수 있습니다 .
cmd 바로 가기를 작성하려면 (예 : 데스크탑) / k 매개 변수를 추가하십시오 (/ k는 유지를 의미하고 / c는 창을 닫습니다).
cmd /k echo hello && cd c:\ && cd Windows
호출 을 사용 하여 너무 빨리 평가되는 환경 변수의 문제를 극복 할 수 있습니다. 예 :
set A=Hello & call echo %A%
echo
인쇄 합니다. 적어도 이것은 Windows 7 상자에서 관찰되는 것입니다.
setlocal EnableDelayedExpansion
스크립트 또는 cmd /v
)을 사용하는 것입니다. 예를 들면 다음과 같습니다 timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
..
다수의 처리 된 심볼은 동일 라인에 여러 개의 명령어를 실행할 때 사용될 수 있으며, 어떤 경우에는 재 처리를 다른 경우에 출력을 변화로 이어질 또는 단지 실패 할 수있다. 한 가지 중요한 경우는 변수를 조작하는 동일한 행 명령에 배치하는 것입니다.
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!
0 1
위의 예에서 볼 수 있듯이 변수를 사용하는 명령이 같은 줄에 배치되면 지연된 확장을 사용하여 변수 값을 업데이트해야합니다. 변수가 색인화되면 CALL 명령을 %% 수정 자와 함께 사용하여 동일한 행에서 값을 업데이트하십시오.
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%
path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
따라서 RegAsm
상황에 맞는 메뉴에서 특정 어셈블리 작업 (조립품 등록) 을 활성화하려고했습니다 . 내가 가진 문제는 결과를 읽을 수 있기 전에 결과가 깜박이고 사라질 것이라는 것이 었습니다. 따라서 .bat 스크립트에서 Pause 명령이 작동 하지 않고 여기에서 배치 파일 명령 PAUSE가 작동하지 않음Pause
으로 언급 된 것처럼 명령에 실패하면 작동하지 않는으로 파이핑을 시도했습니다 . 그래서 시도 했지만 더 많은 명령을 위해 창을 열어 둡니다 (결과를 읽고 싶습니다). 내가 추가 그래서 다음에 다음의 결과로, 체인 :cmd /k
pause
exit
cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
이것은 매력처럼 작동합니다-RegAsm이 파일에서 실행되고 결과가 표시된 다음 "계속하려면 아무 키나 누르십시오 ..."프롬프트가 표시되고 키를 누르면 명령 프롬프트 창이 닫힙니다.
추신 : 관심이있는 다른 사람들을 위해 다음 .reg 파일 항목을 사용하여 dll 파일 연결을 .dll 파일에 추가 한 다음 RegAsm 명령 확장을 이스케이프 할 수 있습니다 (이스케이프 된 따옴표와 백 슬래시에 유의).
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"
이제 어셈블리를 등록 할 멋진 마우스 오른쪽 버튼 메뉴가 있습니다.
같은 창에 두 개의 핑을 시도하고 동일한 줄의 직렬 명령입니다. 첫 번째 작업을 완료 한 후 두 번째 명령을 실행하십시오.
해결책은 start /b
Windows 7 명령 프롬프트 와 결합하는 것이 었습니다 .
없이 평소대로 시작 /b
하고 별도의 창에서 시작하십시오 .
같은 줄에서 실행하는 데 사용되는 명령은 다음과 같습니다.
start /b command1 parameters & command2 parameters
어쨌든 출력을 구문 분석하려면 이것을 사용하지 않는 것이 좋습니다. 출력이 명령 출력 사이에서 스크램블되는 것을 알았습니다.
음, 당신은 두 가지 옵션이 있습니다 : 파이핑 또는 그냥 &
:
DIR /S & START FILE.TXT
또는,
tasklist | find "notepad.exe"
파이핑 ( |
)은 한 명령의 출력을 가져와 다른 명령에 넣는 데 더 좋습니다. 그리고 ( &
)는 이것을 실행한다고 말하고 있습니다.
&
과 |
기능 및 차이점에 대한 설명을 포함하도록 게시물을 편집 할 수 있습니까? 현재 이러한 개념에 익숙하지 않은 사람들은 자신의 경우 어떤 개념을 사용해야할지 스스로 결정할 수 없습니다.
아니요 cd / && tree && echo %time%
. 반향 시간은 첫 번째 명령이 실행될 때입니다.
배관에는 약간의 문제가 있지만 사람들이 배관 작동 방식을 알고있는 한 중요하지 않습니다.
한 줄에서 변수를 사용하거나 조작하려고 할 때 내용을주의하십시오! 예를 들어 다음과 같은 변수
PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
다음과 같이 사용하면 다루기 힘든 많은 문제가 발생할 수 있습니다. %PATH%
%PATH%
괄호 문제를 처리하는 데 사용할 수 없습니다%USERPROFILE%
에는 무엇이 포함 될까요?그렇습니다. 그것은이다 &
.
&&
명령 1이 완료되지 않으면 명령 2가 실행됩니다.
&
상관없이 실행됩니다.
&
한 줄에 명령을 사용하려면 창에서 기호 사용
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
우리가 사용하는 리눅스처럼
touch thisfile ; ls -lstrh
간단&&
합니다. 표지판으로 구분하면됩니다 . 예:
echo "Hello World" && echo "GoodBye World".
"Hello World"다음에 "Goodbye World"가 인쇄됩니다.
&&
A는 조건부 처음 명령 (ERRORLEVEL = 0) 때 succeded 연산자는 다음 명령은 실행
Hello World
실패하지 않았다. @jeb가 말했듯 &&
이 조건부입니다. &
이전의 성공 여부에 관계없이 명령을 실행합니다.