2017-02-10 980 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

試試這個: 新建項目-ItemType目錄-Force -Path C:\路徑\這\ \可能還是\ \可能不存在\ –

回答

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

Upvoting指出需要Force來創建整棵樹。 – GermanC

相關問題