windows - 如何使用 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
谢谢!
解决方案
问: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
了)我坚持这一点。
推荐阅读
- python - 变量值在单元测试中的函数调用后持续存在
- python - 创建与现有数据集具有相似特征的时间序列数据集
- html - 将引导文本粘贴到左侧
- javascript - 未捕获的错误:无效的挂钩调用。Hooks 只能在函数组件的主体内部调用 - 错误仅在 Electron 中显示
- amazon-timestream - 您如何字符串操作来自时间流的返回结果?
- javascript - Reactjs onClick
- reactjs - 如何播放从烧瓶 send_file 发送的音频文件?
- algorithm - 难以思考分而治之的方法
- c - gem5 系统调用查看陷阱指令
- mysql - 损坏的 mysqld 包阻止在 ubuntu 中进行任何其他安装