如何解决批处理 CMD - 将文本提取到最后一个特殊字符
我正在尝试提取没有文件名的路径位置。例如,程序生成的日志文件会有类似如下的字符串:
2021-03-24T13:34:15 - Processing: C:\Source\SubFolder1\SubFolder2\SubFolder3\File1-???????????.txt
C:\Source\SubFolder1\SubFolder2\SubFolder3
到目前为止,我能够得到:
C:\Source\SubFolder1\SubFolder2\SubFolder3\File1-??????????????????????????.txt"
使用以下代码:
for /f "delims=" %%a in ('^<"C:\Source0\sample.txt" find "Processing:"') do set _path="%%a"
set _path_=%_path:~35%
echo %_path_%
请帮助我展示如何省略 File1*-?????字符串的一部分
编辑:file1-?????部分的字符长度不固定,并且可以进一步降低级别的副导演也不是。唯一固定的部分是我使用 %_path:~35% 省略的字符串的前 35 个字符。
解决方法
也许这样的事情对你有用:
在 cmd 中作为 command-line:
For /F "Tokens=3,*" %G In ('%SystemRoot%\System32\find.exe "Processing:" 0^<"C:\Source0\sample.txt"') Do @For %I In ("%~dpH.") Do @Echo %~dpnxI
或作为 command-line 中的 batch-file:
@For /F "Tokens=3,*" %%G In ('%SystemRoot%\System32\find.exe "Processing:" 0^<"C:\Source0\sample.txt"') Do @For %%I In ("%%~dpH.") Do @Echo %%~dpnxI
,
我很高兴你有一些有用的东西。另一种方法是使用已在您支持的 Windows 系统上的 PowerShell。这看起来很长,但可以通过不仔细检查日期和时间来减少它。
SET "THESTRING=2021-03-24T13:34:15 - Processing: C:\Source\SubFolder1\SubFolder2\SubFolder3\File1-???????????.txt"
REM === Find the full file name
SET "PART=no match"
FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command ^
"if ('%THESTRING%' -match '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} - Processing: .*\\(.*)\.txt.*') {" ^
"$Matches[1]"}') DO (SET "PART=%%~A")
ECHO PART IS ===%PART%===
REM === Find the part of the name after the HYPHEN character
SET "PART=no match"
FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command ^
"if ('%THESTRING%' -match '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} - Processing: .*\\.*-(.*)\.txt.*') {" ^
"$Matches[1]"}') DO (SET "PART=%%~A")
ECHO PART IS ===%PART%===
如果不在 CMD.EXE 中运行会更容易。
$TheSting=2021-03-24T13:34:15 - Processing: C:\Source\SubFolder1\SubFolder2\SubFolder3\File1-???????????.txt"
$Part = if ('%TheString%' -match '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2} - Processing: .*\\(.*)\.txt.*') { "$Matches[1]" }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。