创建目录时遇到问题

时间:2015-05-22 21:57:15

标签: powershell

我正在尝试创建一个名称已经存在的目录。这些名称保存为

$targetfolders[1] = "ABC"
$targetfolders[2] = "DEF"
$targetfolders[3] = "GHI"

New-Item c:\$targetfolders[1]\$targetfolders[2]\$targetfolders[3] -type directory

它不起作用。

3 个答案:

答案 0 :(得分:2)

如果您正在使用PowerShell 3.0+(以及.NET 4.0 +):

New-Item [System.IO.Path]::Combine(@("C:\") + $targetFolders) -Type Directory

否则,

$path = "C:\"; $targetFolders | % { $path = Join-Path $path $_ }
New-Item $path -Type Directory 

你的错误是你没有把你的路径放在一个字符串中,

"c:\$($targetfolders[1])\$($targetfolders[2])\$($targetfolders[3])"

$()字符串内部将评估内部内容并替换它。变量替换也有效(但不适用于数组):

"c:\$folder1\$folder2\$folder3"

答案 1 :(得分:0)

我建议将完整路径放入第二个变量并使用它,如下所示:

$fullpath = "C:\"+($targetfolders)[1]+"\"+($targetfolders)[2]+"\"+($targetfolders)[3]
New-Item $fullpath -Type Directory

答案 2 :(得分:0)

您可以使用format operator构建路径:

$targetfolders = 'ABC', 'DEF', 'GHI'

$path = 'c:\{0}\{1}\{2}' -f $targetfolders

New-Item -Type Directory -Path $path

如果阵列中有其他元素,可以通过调整格式字符串中的索引来掩盖它们:

$targetfolders = 'foo', 'ABC', 'DEF', 'bar', 'GHI'

$path = 'c:\{1}\{2}\{4}' -f $targetfolders

New-Item -Type Directory -Path $path