找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19766|回复: 3

[文本处理] [已解决]批处理截取指定字符间字符

[复制链接]
发表于 2021-5-25 16:42:50 | 显示全部楼层 |阅读模式
截取<ARCH>9</ARCH>之间字符 不要第三方和PS可以截取到吗
  1. <WIM><TOTALBYTES>2041944162</TOTALBYTES><IMAGE INDEX="1"><DIRCOUNT>22623</DIRCOUNT><FILECOUNT>78630</FILECOUNT><TOTALBYTES>11198019561</TOTALBYTES><HARDLINKBYTES>5313184735</HARDLINKBYTES><CREATIONTIME><HIGHPART>0x01D72D48</HIGHPART><LOWPART>0xC1239A12</LOWPART></CREATIONTIME><LASTMODIFICATIONTIME><HIGHPART>0x01D74D48</HIGHPART><LOWPART>0x38E79118</LOWPART></LASTMODIFICATIONTIME><WIMBOOT>0</WIMBOOT><WINDOWS><ARCH>9</ARCH><PRODUCTNAME>Microsoft&#174; Windows&#174; Operating System</PRODUCTNAME><EDITIONID>ProfessionalWorkstation</EDITIONID><INSTALLATIONTYPE>Client</INSTALLATIONTYPE><SERVICINGDATA><GDRDUREVISION>0</GDRDUREVISION><PKEYCONFIGVERSION>10.0.19041.1;2016-01-01T00:00:00Z</PKEYCONFIGVERSION><IMAGESTATE>IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE</IMAGESTATE></SERVICINGDATA><PRODUCTTYPE>WinNT</PRODUCTTYPE><PRODUCTSUITE>Terminal Server</PRODUCTSUITE><LANGUAGES><LANGUAGE>zh-CN</LANGUAGE><FALLBACK LANGUAGE="zh-CN">en-US</FALLBACK><DEFAULT>zh-CN</DEFAULT></LANGUAGES><VERSION><MAJOR>10</MAJOR><MINOR>0</MINOR><BUILD>19043</BUILD><SPBUILD>985</SPBUILD><SPLEVEL>0</SPLEVEL><BRANCH>vb_release</BRANCH></VERSION><SYSTEMROOT>WINDOWS</SYSTEMROOT></WINDOWS><NAME>Windows 10 专业工作站版(Admin)</NAME><DESCRIPTION>Windows 10 专业工作站版(Admin)</DESCRIPTION><FLAGS>Professional</FLAGS><DISPLAYNAME>Windows 10 专业工作站版(Admin)</DISPLAYNAME><DISPLAYDESCRIPTION>Windows 10 专业工作站版(Admin)</DISPLAYDESCRIPTION></IMAGE><IMAGE INDEX="2"><DIRCOUNT>23067</DIRCOUNT><FILECOUNT>80875</FILECOUNT><TOTALBYTES>11578277650</TOTALBYTES><HARDLINKBYTES>5503421812</HARDLINKBYTES><CREATIONTIME><HIGHPART>0x01D72D48</HIGHPART><LOWPART>0xC1239A12</LOWPART></CREATIONTIME><LASTMODIFICATIONTIME><HIGHPART>0x01D74D48</HIGHPART><LOWPART>0x7F484738</LOWPART></LASTMODIFICATIONTIME><WIMBOOT>0</WIMBOOT><WINDOWS><ARCH>9</ARCH><PRODUCTNAME>Microsoft&#174; Windows&#174; Operating System</PRODUCTNAME><EDITIONID>ProfessionalWorkstation</EDITIONID><INSTALLATIONTYPE>Client</INSTALLATIONTYPE><SERVICINGDATA><GDRDUREVISION>0</GDRDUREVISION><PKEYCONFIGVERSION>10.0.19041.1;2016-01-01T00:00:00Z</PKEYCONFIGVERSION><IMAGESTATE>IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE</IMAGESTATE></SERVICINGDATA><PRODUCTTYPE>WinNT</PRODUCTTYPE><PRODUCTSUITE>Terminal Server</PRODUCTSUITE><LANGUAGES><LANGUAGE>zh-CN</LANGUAGE><FALLBACK LANGUAGE="zh-CN">en-US</FALLBACK><DEFAULT>zh-CN</DEFAULT></LANGUAGES><VERSION><MAJOR>10</MAJOR><MINOR>0</MINOR><BUILD>19043</BUILD><SPBUILD>985</SPBUILD><SPLEVEL>0</SPLEVEL><BRANCH>vb_release</BRANCH></VERSION><SYSTEMROOT>WINDOWS</SYSTEMROOT></WINDOWS><NAME>Windows 10 专业工作站版</NAME><DESCRIPTION>Windows 10 专业工作站版</DESCRIPTION><FLAGS>Professional</FLAGS><DISPLAYNAME>Windows 10 专业工作站版</DISPLAYNAME><DISPLAYDESCRIPTION>Windows 10 专业工作站版</DISPLAYDESCRIPTION></IMAGE></WIM>
复制代码
  1. for /f "tokens=2 delims=></" %%i in ('findstr /i ARCH 1.txt^|findstr ARCH') do echo %%i
复制代码
发表于 2021-5-25 17:21:20 | 显示全部楼层
  1. @echo off
  2. for /f "useback delims=" %%a in ("0.txt") do (
  3.         set "str=%%a"
  4.         setlocal enableDelayedExpansion
  5.         if "!str:ARCH=!" neq "!str!" set "str=!str:*<ARCH>=!"
  6.         for /f "delims=<" %%b in ("!str!") do echo;%%b
  7.         endlocal
  8. )
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 谢谢

查看全部评分

 楼主| 发表于 2021-5-25 17:44:29 | 显示全部楼层
本帖最后由 smss 于 2021-5-25 18:13 编辑

wimlib生成utf-16 批处理读不到
大神来科普下为什么下面这样可以
  1. @echo off&chcp 65001
  2. wimlib-imagex.exe info install.esd --xml>1.txt
  3. for /f "delims=" %%a in ('type 1.txt') do (
  4.         set "str=%%a"
  5.         setlocal enableDelayedExpansion
  6.         if "!str:ARCH=!" neq "!str!" set "str=!str:*<ARCH>=!"
  7.         for /f "delims=<" %%b in ("!str!") do echo;%%b
  8.         endlocal
  9. )
  10. pause
复制代码
这样不可以
  1. @echo off&chcp 65001
  2. for /f "delims=" %%a in ('wimlib-imagex.exe info install.esd --xml') do (
  3.         set "str=%%a"
  4.         setlocal enableDelayedExpansion
  5.         if "!str:ARCH=!" neq "!str!" set "str=!str:*<ARCH>=!"
  6.         for /f "delims=<" %%b in ("!str!") do echo;%%b
  7.         endlocal
  8. )
  9. pause
复制代码
发表于 2021-5-25 20:53:19 | 显示全部楼层
  1. @if(0)==(0) echo off
  2. @for /f "delims=" %%i in ('type 1.txt^|cscript -nologo -e:jscript "%~f0"') do (
  3.     echo %%i
  4. )
  5. pause&exit /b
  6. @end
  7. WSH.echo(WSH.StdIn.ReadAll().match(/[^>]+(?=<\/ARCH>)/).join('\r\n'));
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:59 , Processed in 0.012215 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表