正则表达式 - 在蝙蝠切割全路径中替换 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'
我正在尝试从 .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'