PowerShell文件路径

时间:2011-06-28 23:08:15

标签: c# file powershell path

我运行命令(Get-Location),它返回文件的当前位置。

示例:c:\folder1\folder2\folder3\XXX\folder4\folder5

首先,从上面我想得到XXX的值,让它等于一个变量。我怎么能这样做?

其次,我希望得到c:\folder1\folder2\folder3\XXX\folder4\的值,并让它等于一个变量。我怎么能这样做?

我已使用占位符folder1folder2等进行说明。这些是动态的。

5 个答案:

答案 0 :(得分:1)

首先回答你的第二个问题:要让父母走到完整路径,请使用Split-Path:

$var = Split-Path -parent "c:\folder1\folder2\folder3\XXX\folder4\folder5"

对于您的其他问题,此函数将拆分路径的所有元素并将它们返回到数组中:

function Split-Paths($pth)
{
    while($pth)
    {
        Split-Path -leaf $pth
        $pth = Split-Path -parent $pth
    }
}

然后你可以像这样抓住第五个元素:

$xxx = (Split-Paths "c:\folder1\folder2\folder3\XXX\folder4\folder5")[-5]

请注意,该函数以“反向”顺序返回元素,因此您使用负索引从数组末尾开始索引。

答案 1 :(得分:1)

其中一些答案非常接近,但每个人都忘记了他们的shell-fu。

$FirstAnswer = (Get-Item ..\..).Name
$SecondAnswer = (Get-Item ..).FullName

答案 2 :(得分:0)

要将路径转换为变量,您可以执行以下操作:

$a = (Get-Location).Path

然后,如果要将路径的“XXX”部分的值设置为变量,可以使用split()函数:

$x = $a.split('\')[4]

答案 3 :(得分:0)

您可以使用正则表达式:

$rawtext = "If it interests you, my e-mail address is tobias@powershell.com."

# Simple pattern recognition:
$rawtext -match "your regular expression"
  *True*

# Reading data matching the pattern from raw text:
$matches

$matches返回结果。

有关详情,请查看 Chapter 13. Text and Regular Expressions (需要注册)。

答案 4 :(得分:0)

您可以使用正则表达式执行此操作:

PS> $path = 'c:\folder1\folder2\folder3\XXX\folder4\folder5'
PS> $path -match 'c:\\([^\\]+)\\([^\\]+)\\([^\\]+)\\([^\\]+)'
True
PS> $matches

Name                           Value
----                           -----
4                              XXX
3                              folder3
2                              folder2
1                              folder1
0                              c:\folder1\folder2\folder3\XXX