2012-12-17 50 views
8

我有一個PowerShell腳本,做了很多事情,其中​​之一是移動文件它不會使目錄:Powershell的「布展項目」,如果它不存在

$from = $path + '\' + $_.substring(8) 
$to = $quarantaine + '\' + $_.substring(8) 

Move-Item $from $to 

但它發生的目錄結構尚不存在於$to路徑中。所以我想讓Powershell使用這個突擊隊創建它。我試過Move-Item -Force $from $to,但那並沒有幫助。

我該怎麼做才能確保Powershell創建所需的目錄才能使事情正常工作?
我希望我自己清楚,如果沒有,請問!

+0

看到這個問題:http://stackoverflow.com/questions/2695504/powershell-2-copy-item-which-creates-a-folder-if-不存在 – cristobalito

+0

這就是我已經嘗試過,沒有運氣。正如在我的問題 – Michiel

+0

中提到的可以做一個複製和刪除。 – cristobalito

回答

7

你可以自己創建它:

$from = Join-Path $path $_.substring(8) 
$to = Join-Path $quarantaine $_.substring(8) 

if(!(Test-Path $to)) 
{ 
    New-Item -Path $to -ItemType Directory -PathType Container -Force | Out-Null 
} 

Move-Item $from $to 
+3

'-PathType Container'不是'New-Item'的參數。刪除它並按預期工作。 – Laoujin

3

您可以使用system.io.directory .NET類來檢查目標目錄,並創建如果它不存在。 下面是使用變量的例子: -

if (!([system.io.directory]::Exists($quarantine))){ 
    [system.io.directory]::CreateDirectory($quarantine) 
} 
Copy-File $from $to 
+0

你爲什麼要用這個簡單和更常見的'Test-Path' /'New-Item'? –

+0

@NelsonRothermel在寫這篇文章的時候,我對PowerShell並不陌生,我給出的答案是當時我將如何做到這一點 - 這是4年前的事。這幾天我確實會使用測試路徑/新項目。 –

+0

@NelsonRothermel它實際上是我發現PowerShell相當不錯的東西 - 如果你使用.NET背景進入它,很多你習慣的是便攜式的,並且可以在PowerShell中輕鬆地重用。如果沒有一個可以滿足你需要的cmdlet,但是有一個.NET類可以解決問題! –

相關問題