正则表达式 - 在蝙蝠切割全路径中替换 PowerShell

Regex -replace PowerShell inside a bat cut fullpath

我正在尝试从 .txt 文件中删除一些路径,例如:

Complete name                            : Z:\Vidéos\Japan Trip\DayXX.mkv

我的目标是只有 :

Complete name                            : DayXX.mkv

我在这里找到这段代码:

setlocal
set $source="%~f1-Temp\%Name%.txt"
set $Dest="%~f1-Temp\%Name%1.txt"

set "search=(?<=Complete name.*?: ).+/"
set "replace=New"

for /f "delims=" %%a in ('powershell -c "(get-content '%$source%') | foreach-object {$_ -replace '%Search%', '%replace%'} | set-content '%$dest%'"') do echo %%a
endlocal

经过多次尝试,似乎正则表达式 (?<=Complete name.*?:).+ 应该可以,但不行。

我的问题是:\ 和像 é à ù 这样的法语字母。

你对我有什么想法吗?

谢谢!

我认为您混合使用 CMD/Batch 和 Powershell 很容易出错。为什么不使用纯 Powershell?在一个简单的版本中,像这样的东西就足够了:

$Content = Get-Content -Path 'InputFile.txt'
$NewContent = 
$Content |
ForEach-Object {
    $_ -replace '(?<=Complete name\s+:\s+).+\'
}
$NewContent | 
Out-File -FilePath 'InputFile.txt'