2011-11-11 5 views
175

PowerShell에서 조건부 테스트를 무효화하려면 어떻게합니까? 내가 디렉토리 C를 확인하려면PowerShell에서 조건을 무효화하려면 어떻게합니까?

예를 들어, : \ 코드, 난 실행할 수 있습니다

if (Test-Path C:\Code){ 
    write "it exists!" 
} 

, 예를 들어, 해당 조건을 부정 할 수있는 방법이 있나요 (비 작동) :

if (Not (Test-Path C:\Code)){ 
    write "it doesn't exist!" 
} 

해결 :

if (Test-Path C:\Code){ 
} 
else { 
    write "it doesn't exist" 
} 

이 잘 작동하지만 내가 뭔가 인라인을 선호하는 것입니다.

답변

323

당신은 거의 Not으로했습니다. 그것은 대부분의 읽기/이해할 수있는 방법은 아닙니다 비록, if (!(Test-Path C:\Code)){}

그냥 재미를 위해, 당신은 또한 비트 독점 사용할 수 있습니다 또는 : 또한 !을 사용할 수 있습니다

if (-Not (Test-Path C:\Code)) { 
    write "it doesn't exist!" 
} 

: 그것은해야합니다.

if ((test-path C:\code) -bxor 1) {write "it doesn't exist!"} 
+0

재미있는 기능, 그래서'-not'이'의 전통적인 대안 제공을 사용할 수 있습니다!' 그때? 어떻게 든'-eq'와'-ne'을위한 전통적인 대안을 얻을 수 있을까요? –

+6

아니요,'-not'은 대체와 함께 제공되는 유일한 논리 연산자입니다 ('help about_Logical_Operators'를보십시오). 그리고 연산자는 앨리어스 될 수 없습니다. – Rynant

+6

고마워, 나는'! '의 사용에 괄호가 필요하다는 사실을 놓쳤다. –

8

당신이 나 같은 및 이중 괄호를 싫어하는 경우에, 당신은

function not ($cm, $pm) { 
    if (& $cm $pm) {0} else {1} 
} 

if (not Test-Path C:\Code) {'it does not exist!'} 

Example

+0

저는이 기능을 좋아하지만 모든 곳에서이 'not'구현을 사용할 수 없습니다 (예 :'not Test-Path - 경로 C : \ Code'는 작동하지 않습니다). 이 관련 [게시물] (http://stackoverflow.com/q/31888580/450913)도 참조하십시오. – orad

관련 문제