2015-05-22 153 views
0

我正在尝试创建一个名称已存在的目录。这些名称保存为在创建目录时遇到问题

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

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

它不起作用。

回答

0

我建议把完整路径到第二个变量和使用,就像这样:如果你正在使用PowerShell的

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

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" 
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