我正在尝试在某个目标位置创建目录,如果它们不存在。
目录的名称来自另一个源位置。
表示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 :(得分: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
以使其实际创建目录。