2013-06-26 18 views
46

Próbuję utworzyć folder przy użyciu PowerShell, jeśli nie istnieje, więc zrobiłem:Tworzenie folderu, jeśli nie istnieje - „Obiekt już istnieje”

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

To daje mi błąd, że folderze już istnieje, co robi, ale nie powinno próbować go tworzyć.

Nie jestem pewien, co się dzieje tutaj

New-Item: Element z nazwą określoną C: \ Users \ L \ Documents \ MatchedLog już istnieje. W C: \ Users \ l \ Documents \ \ email.ps1 PowerShell: 4 Znak: 13 + New-Item < < < < katalog -ItemType -path $ DOCDIR \ MatchedLog + CategoryInfo: ResourceExists: (C: \ Users \ L .... enty \ MatchedLog: String) [New-Item], IOException + FullyQualifiedErrorId: DirectoryExist, Microsoft.PowerShell.Commands.NewItemCommand`

+0

Spróbuj to: New-Item -ItemType katalog -force - Ścieżka C: \ Ścieżka \ Która \ Maj \ Or \ May \ Not \ Exist –

Odpowiedz

79

nie został jeszcze koncentracją, oto jak to zrobić

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

Wartość $ TARGETDIR powinna być w podwójnych cudzysłowach, rozwijanie ciągów jest wyłączone w pojedynczym, a skończy się nieprawidłowym kliknięciem h –

+2

Czy istniejący plik o tej samej nazwie, jak folder, który próbujesz utworzyć, nie pasuje również do ścieżki testowej - ścieżka $ TARGETDIR? (Zastanawiając się nad dodaniem "-pathType container") – ftexperts

37

Za pomocą New-Item można dodać parametr Force

New-Item -Force -ItemType directory -Path foo 

Albo ErrorAction parametr

New-Item -ErrorAction Ignore -ItemType directory -Path foo 
+1

JFI "-ErrorAction Ignore" nie jest obsługiwane w PowerShell 2 – KindDragon

+0

Odpowiedź na inne pytanie. –

+0

Aby utworzyć element bez wydruku konsoli: New-Element -Force -ItemType directory -Path D: \ yourpath \ 1 | Out-Null – George

4

Alternatywna składnia pomocą operatora -Not i w zależności od preferencji dla czytelności:

if(-Not (Test-Path -Path $TARGETDIR)) 
{ 
    New-Item -ItemType directory -Path $TARGETDIR 
} 
Powiązane problemy