在传递给foreach循环之前从数组中删除字符

时间:2013-03-01 17:50:00

标签: powershell

我有一个powershell脚本,可以创建文件夹并根据数组创建共享。所以数组就像$folders = ("C:\test1", "C:\test2")

我执行foreach循环并使文件夹正常。

这是问题所在。我想使用相同的foreach数组创建另一个$folders循环,除了删除前三个字符(因此C:\test1只是变成test1)。我这样做是为了创建共享(这只是没有驱动器的文件夹的名称)。

如何删除前三个字符并将其传递给我的新循环?非常感谢!!!

3 个答案:

答案 0 :(得分:2)

$newFolders = $folders | % { $_.substring(3) }会将$ newFolders设置为您正在寻找的数组。

您也可以使用$folders | % { $_.substring(3) } | % { sharing_code }等内容进行内联。

也就是说,更强大的版本就像$newFolders = $folders | % { split-path -leaf $_ }

答案 1 :(得分:2)

一个简短的解决方案:)

$ folders -replace'^ ...'

答案 2 :(得分:0)

我至少可以想到三种方法。选择你最喜欢的;)

# The most basic
$folders | %{$_.trimstart("c:\")}

# This one works with all drive letters
$folders | %{$_ -replace "\w:\\"}

# That last will only return the final file/folder in your path
# If you use a path such as "c:\something\else" then it'll return "else"
$folders | %{split-path $_ -leaf}

HTH!