2016-05-24 69 views
2

我試圖在某個目標位置創建目錄,如果它們不存在的話。試圖用Powershell創建目錄

該目錄的名稱來自另一個源位置。

每個目錄名C:\some\location
C:\another\location.

例如創建同名的新目錄。

c:\some\location\ 
       \apples 
       \oranges 

to 
c:\another\location\ 
        \apples 
        \oranges 

所以實際上我重新創建了所有的文件夾從source -> to -> target。 不遞歸,順便說一句。只是最高級別。

所以我用PS得到這個至今:

dir -Directory | New-Item -ItemType Directory -Path (Join-Path "C:\jussy-test\" Select-Object Name)

dir -Directory | New-Item -ItemType Directory -Path "C:\new-target-location\" + Select-Object Name

,我被卡住。我試圖讓最後一點正確。但不管怎樣,也許有人在腦海中有一個更好的主意?

+0

單行:'dir -Path C:\ some \ location \ * -Directory | %{New-Item -ItemType Directory -Path C:\ another \ location \ -Name $ _。Name}' – xXhRQ8sD2L7Z

回答

2

你非常接近你的第一次嘗試。你缺少的主要是如何迭代Get-Childitem(又名dir)的輸出。對於這一點,你需要管Foreach-Object

$srcDir = 'c:\some\location' 
$destDir = 'c:\another\location' 

dir $srcDir -Directory | foreach { 
    mkdir (join-path $destDir $_.name) -WhatIf 
} 

foreach內部,可變$_保存當前對象,並$_.Name選擇Name屬性。 (這也使用mkdir作爲New-Item -Directory的替代品,但它們大多可互換)。

一旦你知道這段代碼正在做什麼,刪除-WhatIf讓它實際上創建目錄。