微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

批处理 CMD - 将文本提取到最后一个特殊字符

如何解决批处理 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 个字符。

解决方法

也许这样的事情对你有用:

中作为

For /F "Tokens=3,*" %G In ('%SystemRoot%\System32\find.exe "Processing:" 0^<"C:\Source0\sample.txt"') Do @For %I In ("%~dpH.") Do @Echo %~dpnxI

或作为 中的

@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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?