尝试使用Powershell

时间:2016-05-24 02:31:08

标签: 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

我被困住了。我正试图让最后一点正确。但是,不管怎么说,也许有人脑子里有一个更好的想法?

1 个答案:

答案 0 :(得分: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以使其实际创建目录。