Как отменить условие в PowerShell? - PullRequest
236 голосов
/ 11 ноября 2011

Как отменить условный тест в PowerShell?

Например, если я хочу проверить каталог C: \ Code, я могу запустить:

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"
}

Это прекрасно работает, но я бы предпочел что-то встроенное.

Ответы [ 3 ]

449 голосов
/ 11 ноября 2011

У вас почти было это с Not. Должно быть:

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

Вы также можете использовать !: if (!(Test-Path C:\Code)){}

Ради интереса, вы также можете использовать побитовый эксклюзив или, хотя это не самый читаемый / понятный метод.

if ((test-path C:\code) -bxor 1) {write "it doesn't exist!"}
9 голосов
/ 19 мая 2014

Если вы похожи на меня и не любите двойные скобки, вы можете использовать функцию

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

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

Пример

0 голосов
/ 06 июля 2019

Powershell также принимает оператор C / C ++ / C * not

if (! (Test-Path C: \ Code)) {напишите "его не существует!"}

Я часто использую его, потому что я привык к C * ... позволяет сжатие / упрощение кода ... Я также нахожу это более элегантным ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...