Как выполнить блок кода, только если скрипт находится в подкаталоге? - PullRequest
0 голосов
/ 07 мая 2018

По сути, у меня есть блок кода, который я буду выполнять только , если он находится в подкаталоге. Вот код, с которым я играл:

if ((Get-Location) -ne "T: \ Content \ WORK *") { [System.Windows.MessageBox] :: Show ("Вы пытаетесь запустить файл вне подпапки диска T :. Это приведет к ошибкам. Вы уверены, что хотите продолжить? »,« Подтвердить выполнение »,« YesNoCancel »,« Warning ») }

Я думал, что подстановочный оператор будет включающим: это означает, что он будет включать в себя папку WORK и подпапки, но блок кода выполняется в папке "WORK" и любой другой папке, в которой я его выполняю.

Вместо этого я хотел бы, чтобы это сообщение отображалось, если я говорю ... просто \ Content или C :. Если условие ложно, я хотел бы продолжить выполнение как обычно. В основном я не хочу, чтобы он отображался, если я нахожусь в \ Content \ WORK \ Scripts или в любой другой подпапке.

Как мне проще всего изменить этот код, чтобы он выполнялся, когда он возвращает true, что скрипт (или текущий каталог) находится в подкаталоге пути?

В случае, если кому-то интересно:

    if((Get-Location) -NotLike "T:\Content\WORK*"){ 
$Result=[System.Windows.MessageBox]::Show("You are attempting to run the file outside a subfolder of the T: drive. This could result in errors. Are you sure you wish to continue?","Confirm Execution","YesNoCancel","Warning") switch($Result) { 
"No" {exit} 
"Cancel" {exit} } 
}

1 Ответ

0 голосов
/ 07 мая 2018

Вы рядом.

Вы должны изменить свое состояние

От:

if((Get-Location) -ne "T:\Content\WORK\*"

Кому:

if((Get-Location).path-like "T:\Content\WORK\*"

EbGreen верен: -ne оценивает условное выражение буквально. Если вы хотите выполнить оценку с подстановочным знаком *, вам нужно использовать -like. Также, чтобы получить текущий путь, вам нужно добавить .path к (Get-location)

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