2017-02-10 6 views
0

Я пытаюсь проанализировать имя файла в папке и хранить части имени файла в переменных. Проверьте! Затем я хочу взять одну из переменных и проверить, существует ли это имя папки в другом месте, и если оно не создается. Если я использую Write-Host, имя папки является допустимым путем, а имя папки не существует, но после выполнения скрипта папка все еще не создана.Powershell для создания папки, если не существует

Что мне делать, чтобы создать папку, если она не существует?

$fileDirectory = "C:\Test\" 
$ParentDir = "C:\Completed\" 
foreach ($file in Get-ChildItem $fileDirectory){ 

    $parts =$file.Name -split '\.' 

    $ManagerName = $parts[0].Trim() 
    $TwoDigitMonth = $parts[1].substring(0,3) 
    $TwoDigitYear = $parts[1].substring(3,3) 

    $FolderToCreate = Join-Path -Path $ParentDir -ChildPath $ManagerName 

    If(!(Test-Path -path "$FolderToCreate\")) 
    { 
     #if it does not create it 
     New-Item -ItemType -type Directory -Force -Path $FolderToCreate 
    } 

} 
+0

попробовать это: New-Item -ItemType Каталог -Force -Path C: \ Путь \ что \ Пусть \ или \ May \ Не \ Exist –

ответ

5
if (!(Test-Path $FolderToCreate -PathType Container)) { 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
+0

Это прекрасно работает! Спасибо – BellHopByDayAmetuerCoderByNigh

0

другое решение:

if (![System.IO.Directory]::Exists($FolderToCreate)) 
{ 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
1

попробовать это: Ключ (-Force), он проверяет для каждого подкаталога, если они не существуют, было бы просто создать его и пойти на следующий и никогда не бросать ошибку.

В приведенном ниже примере вам понадобятся 7 вложенных подкаталогов, с одной единственной строкой вы можете создать любого, кто не существует.

другой момент, вы можете повторно запустить его столько, сколько времени, и он предназначен, чтобы никогда не бросать ошибку!

New-Item -ItemType Directory -Force -Path C:\Path\That\May\Or\May\Not\Exist 
+0

Хотя этот фрагмент кода приветствуется и может оказать некоторую помощь, было бы [значительно улучшено, если бы оно включало в себя объяснение] (// meta.stackexchange.com/q/114762) из ​​* как * он решает вопрос. Без этого ваш ответ имеет гораздо меньшую образовательную ценность - помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

+0

Активация для указания необходимости Силы для создания всего дерева. – GermanC