首页 > 解决方案 > 批处理 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-????? 部分的字符长度不固定,可以进一步降低级别的子目录也不固定。唯一固定的部分是字符串的前 35 个字符,我使用 %_path:~35% 省略了这些字符。

标签: windowsfor-loopbatch-filecmdcommand-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

或者作为中的

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

推荐阅读