2013-06-26 93 views
46

我想,如果它不存在,所以我沒有創建一個使用PowerShell的一個文件夾:創建一個文件夾,如果不存在的話 - 「項目已存在」

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

這是給我的錯誤,該文件夾它已經存在,但它不應該嘗試創建它。

我不知道什麼是錯在這裏

新建項目:\用戶\升\文檔\ MatchedLog已經存在:指定名稱C項目。在C:\ Users \ l \ Documents \ Powershell \ email.ps1:4 char:13 + New-Item < < < < < -ItemType directory -Path $ DOCDIR \ MatchedLog + CategoryInfo:ResourceExists:(C:\ Users \升....已廢除\ MatchedLog:字符串)[新建項目],IOException異常 + FullyQualifiedErrorId:DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand`

+0

試試這個:新建項目-ItemType目錄-Force - 路徑C:\ Path \ That \ May \或\ May \ Not \ Exist –

回答

79

我也不集中,這裏是如何做到這一點

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

$ TARGETDIR的值應該用雙引號括起來,字符串擴展在single中是禁用的,最終會導致無效的pat h –

+2

與您嘗試創建的文件夾名稱不同的現有文件是否與Test-Path -Path $ TARGETDIR匹配呢? (想添加「-pathType容器」) – ftexperts

37

使用New-Item,您可以添加Force參數

New-Item -Force -ItemType directory -Path foo 

還是ErrorAction參數

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

JFI「-ErrorAction忽略」在PowerShell 2中不受支持 – KindDragon

+0

對另一個問題的回答。 –

+0

要創建沒有控制檯打印的項目:New-Item -Force -ItemType directory -Path D:\ yourpath \ 1 |外空 – George

4

替代語法使用-Not操作,並根據您的喜好爲便於閱讀:

if(-Not (Test-Path -Path $TARGETDIR)) 
{ 
    New-Item -ItemType directory -Path $TARGETDIR 
} 
相關問題