Board logo

标题: [文本处理] bat如何截取文本中文件路径格式的字符串 [打印本页]

作者: qiaoyinlu    时间: 2022-2-17 12:09     标题: bat如何截取文本中文件路径格式的字符串

各位坛友,
c:\Program Files\JetBrains\PyCharm Community Edition 2021.1.1\jbr\lib\security\cacerts
c:\Program Files (x86)\Java\jre1.8.0_291\lib\security\cacerts
c:\Program Files (x86)\XMind\jre\lib\security\cacerts

我需要截取lib前的路径,比如 c:\Program Files (x86)\XMind\jre\并加上c:\Program Files (x86)\XMind\jre\bin\keytool来进行证书导入。
我已经dir搜索磁盘下的所有证书保存到certlist.txt文件中,文件内容如上粘贴的文件路径。

当我获取到所有证书路径后需要把它截取lib之前的路径保存为变量,然后加上\bin\keytool来执行下一步的导入证书。
@echo off
for /f "delims=\ tokens=*,n-1" %%i in (c:\certlist.txt) do echo %%i %%j %%k %%l %%m
pause

请问delims可以使用单词lib分割吗?我尝试了好像不行。还有tokens能够从最后一行往前进行变量取值吗?

这样的文本操作还有其他形式实现的吗?谢谢
作者: Batcher    时间: 2022-2-17 13:10

回复 1# qiaoyinlu


test_1.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('type "C:\certlist.txt"') do (
  4.     set "str=%%i"
  5.     echo !str:~0,-20!
  6. )
复制代码

作者: Batcher    时间: 2022-2-17 13:13

回复 1# qiaoyinlu


test_2.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('type "C:\certlist.txt"') do (
  4.     set "StrAll=%%i"
  5.     set "StrRight=!StrAll:*\lib\=!"
  6.     call set "StrLeft=%%StrAll:\lib\!StrRight!=%%"
  7.     echo !StrLeft!
  8. )
复制代码

作者: qiaoyinlu    时间: 2022-2-17 13:57

回复 3# Batcher


    厉害 钦佩之情无法表达!!!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2