Поиск по сайту:

Как проверить, существует ли папка в PowerShell


Прежде чем сохранить файл в папке или попытаться прочитать файл из папки, имеет смысл проверить, существует ли папка в PowerShell. Таким образом, вы предотвратите любые ошибки, которые могут привести к остановке вашего скрипта.

Для этого мы можем использовать командлет Test-Path. Этот командлет вернет True или False в зависимости от результата, позволяя вам легко использовать его в вашем скрипте.

В этой статье я покажу вам, как использовать командлет Test-Path, чтобы проверить, существует ли папка.

Проверьте, существует ли папка

Самый простой способ проверить, существует ли каталог в PowerShell, - использовать командлет Test-Path. Этот командлет возвращает логическое значение, которое мы можем использовать, например, в условном операторе if-else.

Если вы выполните командлет напрямую в своей консоли, вы увидите, что он просто вернет True или False в виде строки:

Test-Path -Path "c:\temp\random-file.txt"

Более реалистичным примером является проверка существования папки перед созданием новой. Простой способ сделать это - использовать оператор if-else. Для пути к папке не имеет значения, есть ли у вас \ в конце пути или нет, но это будет работать.

Просто помните, что необходимо ставить путь в кавычки, если путь содержит пробел. Лично я всегда использую кавычки вокруг путей, это облегчает чтение и предотвращает ошибки:

if (Test-Path -path "c:\temp") {
    # Folder exists
}else{
    # Folder doesn't exists
}

Если вам нужно только узнать, существует ли путь, то мы можем также использовать короткое условие if с помощью оператора -not. Таким образом, мы запускаем код внутри условия if только когда каталог не существует:

$folder = "C:\temp"

if (-not(Test-Path -path $folder)) {
    # Folder doesn't exists, create the folder
    New-Item -Path $folder -ItemType Directory
}

Проверьте, что путь действителен

Помимо проверки существования директории, мы также можем проверить, является ли путь допустимым. Это не означает, что путь (папка) фактически существует, но это проверяет, является ли данная строка допустимым путём.

Мы обычно используем это перед созданием новой папки или структуры папок. Cmdlet New-Item на самом деле может создать все папки на нескольких уровнях. В приведенном ниже примере мы проверяем, существует ли папка, и является ли данный путь действительным. Если оба условия истинны, мы создаем структуру папок:

$folderStructure = "c:\temp\lab\test\"

if (-not(Test-Path $folderStructure) -and (Test-Path $folderStructure -IsValid)) {
    New-Item -path "c:\temp\lab\test\" -ItemType Directory
}

Заключение

Проверка существования папки или директории перед их использованием может предотвратить множество ошибок в вашем скрипте PowerShell. Cmdlet Test-Path легко использовать и он гарантирует, что вы не пытаетесь получить доступ к несуществующим папкам или создать дублирующиеся папки.

Надеюсь, вам понравилась эта статья. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.