Как создать папку в PowerShell
Создание новых папок с помощью командной строки всегда было возможным в Windows. Мы могли использовать команду mkdir в старом командном интерфейсе. Но как создать папку в PowerShell? Вы также можете использовать команду mkdir, но есть и лучший способ.
В PowerShell мы можем использовать командлет New-Item для создания новой директории. Этот командлет более мощный, чем старая команда mkdir.
В этой статье я покажу вам, как создать папку в PowerShell с подкаталогами или без, и многое другое!
Создание папки в Powershell
Давайте начнем с основ: чтобы создать новый каталог в PowerShell, мы будем использовать командлет New-Item. Этот командлет можно использовать для создания файлов, папок или символических ссылок. В этой статье мы сосредоточимся на создании папки.
Чтобы создать новый каталог, нам нужно указать путь, где мы хотим создать папку, и имя новой папки:
New-Item -Path "c:\temp\" -Name "testfolder" -ItemType Directory
Мы даже можем сократить это, включая имя новой папки в параметр -path и заменив -ItemType на -Type.
Create a new folder "testfolder-b" in the path c:\temp
New-Item -Path "c:\temp\testfolder-b" -Type Directory
You can even leave out the path paremeter label
New-Item "c:\temp\testfolder-b" -Type DirectoryЛично я предпочитаю использовать параметр -Name в скриптах, потому что это упрощает другим чтение вашего кода и позволяет увидеть, где создается новая папка.
Создайте новую папку в текущем расположении
Чтобы создать новую директорию в текущем местоположении скрипта PowerShell (или в рабочем местоположении вашей сессии PowerShell), мы можем просто опустить параметр -path. Другой, более читаемый, вариант - указать . для текущего пути:
Create a new directory in the current location
New-Item -Name "testfolder-c" -Type Directory
Same result
New-Item -Path '.\testfolder-c' -Type DirectoryСоздание нескольких папок
Также возможно создать несколько папок сразу. Для этого в основном есть два метода, которые мы можем использовать. Мы можем либо пройтись по массиву папок для создания, либо указать несколько папок в строке массива.
Если вам нужно создать всего несколько папок, то вариант ниже является самым удобным для использования:
New-Item -Path "c:\temp\folder1","c:\temp\folder2","c:\temp\folder3" -Type DirectoryДругой вариант - использовать цикл ForEach-Object. Этот метод можно использовать с простым массивом или для создания папок из файла CSV, например:
$folders = (
"folder4",
"folder5",
"folder6"
)
$folders | ForEach {New-Item -Path "c:\temp\" -Name $_ -Type Directory}В приведенном ниже примере у меня есть простой CSV-файл только с названиями папок. Поэтому нам нужно добавить заголовок, чтобы иметь возможность ссылаться на имена папок в цикле foreach. Вы также можете подключить цикл ForEach непосредственно после Import-CSV, конечно.
$folders = Import-CSV -Path C:\temp\example.csv -Header foldername
$folders | ForEach {New-Item -Path "c:\temp\" -Name $_.foldername -Type Directory}Создайте папки и подпапки
Одним из преимуществ использования PowerShell для создания папок является то, что мы можем создавать папки и подпапки с помощью одной команды. Этот метод действительно удобен, когда вам нужно создать ту же структуру папок для новых проектов, например.
Команда New-Item автоматически создаст родительскую папку, если она отсутствует. Например, если мы хотим создать каталог budget внутри папки marketing, то нам нужно просто указать имя «marketing\budget». Если папка marketing не существует, то команда New-Item создаст ее автоматически.
В приведенном выше примере я указал новые папки в параметре -Name. Но это не обязательно. Вы также можете указать полный путь в параметре -Path или указать родительский путь и только подпапку в параметре -Name. Все команды ниже дадут одинаковый результат:
All these commands will create the folder marketing and budget if they don't exist:
New-Item -Path "c:\temp\" -Name "marketing\budget" -Type Directory
New-Item -Path "c:\temp\marketing" -Name "budget" -Type Directory
New-Item -Path "c:\temp\marketing\budget" -Type DirectoryИспользование подстановочных знаков для создания подпапок
Еще одной мощной особенностью cmdlet new-item является возможность использования подстановочного знака в параметре пути. Теперь вы, возможно, задаетесь вопросом, зачем это нужно, когда вы создаете папку с помощью PowerShell. Но этот метод действительно может быть полезен, когда вам нужно добавить подпапку в несколько папок.
Например, у вас есть папка для каждого из ваших клиентов. Вас просят создать новую подпапку для каждого клиента с именем контракты. Вместо того, чтобы сначала получить каждую директорию с помощью команды Get-ChildItem, вы можете просто использовать подстановочный знак:
New-Item -Path "c:\temp\*" -Name "contracts" -Type DirectoryКак вы можете видеть, подпапка contracts создается в каждой папке по пути c:\temp:
Перезаписать папку и использовать Test-Path
Когда каталог существует, вы не можете создать его снова, в этом нет необходимости. Но при создании папок из скрипта вы часто хотите, чтобы процесс продолжался, даже если каталог существует. Существует несколько вариантов для этого, предпочтительный метод — использовать командлет Test-Path. Но мы также можем принудительно создать папку или просто игнорировать ошибку (что является наименее предпочтительным вариантом).
Параметр -Force на самом деле не воссоздает папку, он просто вернет существующий объект папки без отображения каких-либо ошибок:
New-Item -Path "c:\temp\" -Name "folder1" -Type Directory -Force
Как упоминалось, лучше использовать командлет Test-Path, чтобы проверить, существует ли папка, перед её созданием. Это позволит создать более эффективное решение для обработки ошибок в ваших скриптах. Чтобы создать каталог только в том случае, если папка не существует, вы можете сделать следующее:
$path = "C:\temp\folder1"
Create the folder is the path doesn't exist
If (-not(test-path -Path $path)) {
New-Item -Path $path
}Заключение
Командлет New-item является мощным инструментом для создания файлов и папок в PowerShell. Он заменяет команду mkdir и позволяет легко создавать одну или несколько папок, включая подпапки.
Надеюсь, вы нашли эту статью полезной. Если у вас есть вопросы, просто оставьте комментарий ниже.




