[syntax] Powershell에서 &&를 사용할 수 있습니까?

&&Google에서 검색하기가 악명 높지만 내가 찾은 최고는 이 기사 를 사용하는 것 -and입니다.

불행히도 더 이상 정보를 제공하지 않으며 내가해야 할 일을 찾을 수 없습니다 -and(다시 말해서 악명 높은 검색)

내가 사용하려는 컨텍스트는 “cmd1 실행, 성공하면 cmd2 실행”입니다. 기본적으로 다음과 같습니다.

csc /t:exe /out:a.exe SomeFile.cs && a.exe

이것은 아는 사람에게 쉬운 몇 가지 담당자가 될 것입니다. 감사합니다!


편집 : 그냥 한 줄에 여러 명령을 실행하려는 첫 번째 일이 실패하거나하지 않을 경우 당신은 당신이 사용할 수있는, 상관하지 않으면 ;내 목적의 대부분이 괜찮습니다

예를 들면 다음과 같습니다 kill -n myapp; ./myapp.exe..



답변

CMD에서 ‘&&’는 “명령 1을 실행하고 성공하면 명령 2를 실행합니다”를 의미합니다. 나는 그것을 다음과 같은 것들에 사용했다 :

build && run_tests

PowerShell에서 가장 가까운 작업은 다음과 같습니다.

(build) -and (run_tests)

논리는 동일하지만 명령의 출력 텍스트가 손실됩니다. 그래도 충분할 것입니다.

스크립트 에서이 작업을 수행하는 경우 다음과 같이 명령문을 분리하는 것이 좋습니다.

build
if ($?) {
    run_tests
}

2019/11/27 : 이제 &&운영자는 PowerShell 7 Preview 5 이상에서 사용할 수 있습니다 .

PS > echo "Hello!" && echo "World!"
Hello!
World!


답변

&& 및 || 구현 할 것들 (여전히) 목록에 있었지만 다음으로 추가 할 가장 유용한 것으로 나타나지 않았습니다. 그 이유는 -AND 및 -OR이 있기 때문입니다. 중요하다고 생각되면 Connect에 제안을 제출하고 V3에 대해 제안합니다.


답변

이 시도:

$errorActionPreference='Stop'; csc /t:exe /out:a.exe SomeFile.cs; a.exe


답변

cmd.exe에서 명령을 사용할 수있는 경우 (이것은 Explorer에서 현재 디렉토리를 여는 것을 의미하는 python ./script.pyPowerShell 명령 과 같지만 ii .) PowerShell에서 cmd.exe를 실행할 수 있습니다. 구문은 다음과 같습니다.

cmd /c "command1 && command2"

여기 에이 질문에&& 설명 된 cmd 구문이 제공됩니다 .


답변

PowerShell에서이 명령 시퀀스를 시도했습니다.

Fisrt 테스트

PS C:\> $MyVar = "C:\MyTxt.txt"
PS C:\> ($MyVar -ne $null) -and (Get-Content $MyVar)
True

($MyVar -ne $null)반환 사실(Get-Content $MyVar)도 반환 사실 .

두 번째 테스트

PS C:\> $MyVar = $null
PS C:\> ($MyVar -ne $null) -and (Get-Content $MyVar)
False

($MyVar -ne $null)반환 거짓 지금까지 나는 가정해야 (Get-Content $MyVar)또한 반환 거짓을 .

세 번째 테스트는 두 번째 조건이 분석되지 않았 음을 입증했습니다.

PS C:\> ($MyVar -ne $null) -and (Get-Content "C:\MyTxt.txt")
False

($MyVar -ne $null)반환 거짓 과 두 번째 조건이 입증 (Get-Content "C:\MyTxt.txt")반환하여, 실행 결코 거짓을 전체 명령에.


답변

아주 오래된 질문이지만 새로 온 사람들에게는 질문이 찾고 있는 PowerShell 버전 (유사하지만 동등한 것은 아님 ) -and은 다음과 같이 사용 하는 것입니다.

(build_command) -and (run_tests_command)


답변

상황에 따라 다르지만 “-and”의 예는 다음과 같습니다.

get-childitem | where-object { $_.Name.StartsWith("f") -and $_.Length -gt 10kb }

파일 이름이 “f”로 시작하는 디렉토리에서 10kb보다 큰 모든 파일을 가져옵니다.