使用PowerShell删除路径引用

时间:2017-02-22 08:06:53

标签: powershell path

我正在尝试删除路径中的路径,以获取变量中文件夹的名称,而无需重新输入。

我希望将var中的TaskName称为$ string

我用-replace删除了部分内容。

路径:C:\ 2017 \ 02 \ 21 \ TaskName \ Step \ log

这就是我已经做过的事情:

$string = "C:\2017\02\21\TaskName\Step\log"
$string = $string -replace "\\Step\\log$"

我尝试过类似的事情:

$string  =  $string -replace "C:\\*\\*\\*\\$"

但它不起作用

3 个答案:

答案 0 :(得分:1)

您可以使用Split-Path从路径名中删除最后一个组件。

例如

Split-Path 'C:\Projects\Current\TheProject`

返回C:\Projects\Current

使用-leaf参数返回最后一个组件:

Split-Path -leaf 'C:\Projects\Current\TheProject`

返回TheProject

你可以把它们连在一起

'C:\Projects\Current\TheSolution\ProjectOne' | Split-Path | Split-Path | Split-Path -leaf

获取Current

答案 1 :(得分:0)

如果路径确实存在,则可以执行

(Get-Item "C:\2017\02\21\TaskName\Step\log").Parent.Parent.Name

答案 2 :(得分:0)

您的代码无效,因为$从头到尾查找搜索字符串。此外,*表示前面的0个或多个字符。

因此,您的模式"C:\\*\\*\\*\\$"实际上是在 C:\\\\末尾寻找某些,例如$string

在第二次替换中,您需要将参数传递为:

$string = $string -replace "^C:\\.+\\"

此模式将从头开始(^),C:\后跟任意数量的字符(.+),以\结尾。

有关详细信息,请在powershell中执行以下命令

get-help about_regular_expressions