使用 PowerShell,如何从一行文本中提取文件路径和名称?

问题描述 投票:0回答:1

如果我迭代文本文档,每一行都有这样的输出:

        Newer             432416 2020/04/04 01:50:14    S:\Steam\SteamLibrary\steam.dll

我只想提取文件名和路径:

S:\Steam\SteamLibrary\steam.dll

我知道是否将该行存储在变量中

$textline = "        Newer             432416 2020/04/04 01:50:14    S:\Steam\SteamLibrary\steam.dll"

我可以简单地使用

$textline.split (":")[-1]
,结果是:

\Steam\SteamLibrary\steam.dll

但是我如何让它包含驱动器号

S:
?有没有办法告诉它在前面抓取一个字符并包含分隔符?

谢谢你。

powershell split substring
1个回答
0
投票

您可以使用下面的正则表达式匹配来搜索每行中的文件路径

([A-Za-z]:\\(?:[^\\]+\\)*[^\\]+)

$text_file = "path_to_your_text_file.txt"
$lines = Get-Content $text_file
$pattern = "([A-Za-z]:\\(?:[^\\]+\\)*[^\\]+)"

foreach ($textline in $lines) {
    $match = [regex]::Match($textline, $pattern)

    if ($match.Success) {
        $file_path = $match.Groups[1].Value
        Write-Host $file_path
    }
}

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.