首页 > 解决方案 > 如何使用 findstr 提取文件中的某些文本

问题描述

我正在尝试扫描文本文件,并且只想获取版本

我试过运行这个

>for /f "usebackq tokens=2 delims=, " %i  in (`findstr /l "version" "C:\Test\myfiles\package.text"`) do echo %i

但是它两次返回一个条目

echo "4.2.20"
"4.2.20"

文本文件具有这种格式

 "version":  "4.2.20",

如何使用findstr以这种格式只返回确切的版本4.2.20

谢谢!

标签: windowsbatch-filecmdfindstr

解决方案


问:is there a way to return on the following format 4.220 (remove the last decimal/period?)

- 答:有。拆分版本字符串(像处理文件名一样处理它,所以第一部分%%~ni, "Filename"%%~xi" 并合并两个子字符串:

@echo off
setlocal 

for /f "usebackq tokens=2 delims=, " %%i  in (`findstr /l "version" "C:\Test\myfiles\package.text"`) do (
  set "major=%%~ni"
  set "minor=%%~xi"
)

set "version=%major%%minor:.=%"
echo method 1: %version%

set "version=%major%%minor:~1%"
echo method 2: %version%

可以在单个命令行中执行此操作,但由于您需要延迟扩展,这会变得丑陋、难以阅读和维护不值得付出努力,除非您对此有特殊要求,恕我直言。所以(因为你也标记batch-file了)我坚持这一点。


推荐阅读