web-dev-qa-db-fra.com

Création d'un dossier s'il n'existe pas - "L'élément existe déjà"

J'essaie de créer un dossier à l'aide de PowerShell s'il n'existe pas, alors je l'ai fait:

$DOCDIR = [Environment]::GetFolderPath("MyDocuments")
$TARGETDIR = "$DOCDIR\MatchedLog"
if(!(Test-Path -Path MatchedLog )){
   New-Item -ItemType directory -Path $DOCDIR\MatchedLog
}

Cela me donne une erreur que le dossier existe déjà, ce qui est le cas, mais il ne faut pas essayer de le créer.

Je ne suis pas sûr de ce qui ne va pas ici

New-Item: L'élément avec le nom spécifié C:\Utilisateurs\l\Documents\MatchedLog existe déjà. Dans C:\Utilisateurs\l\Documents\Powershell\email.ps1: 4 caractères: 13 + Nouvel élément <<<< -RepertoireItemType -Path $ DOCDIR\MatchedLog + CategoryInfo: ResourceExists: (C:\Users\l. ... ents\MatchedLog: String) [Nouvel élément], IOException + FullyQualifiedErrorId: DirectoryExist, Microsoft.PowerShell.Commands.NewItemCommand`

67
laitha0

Je ne me concentrais même pas, voici comment le faire

$DOCDIR = [Environment]::GetFolderPath("MyDocuments")
$TARGETDIR = '$DOCDIR\MatchedLog'
if(!(Test-Path -Path $TARGETDIR )){
    New-Item -ItemType directory -Path $TARGETDIR
}
112
laitha0

Avec New-Item, vous pouvez ajouter le paramètre Force

New-Item -Force -ItemType directory -Path foo

Ou le paramètre ErrorAction

New-Item -ErrorAction Ignore -ItemType directory -Path foo
49
Steven Penny

Autre syntaxe utilisant l’opérateur -Not et en fonction de vos préférences de lisibilité:

if( -Not (Test-Path -Path $TARGETDIR ) )
{
    New-Item -ItemType directory -Path $TARGETDIR
}
16
Willem van Ketwich