首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理集语法

Windows批处理集语法
EN

Stack Overflow用户
提问于 2019-08-29 18:34:13
回答 1查看 101关注 0票数 0

我从这里采用了一些代码:

Extract substring between 2 strings

代码语言:javascript
复制
Rem Looking for a test.txt substring preceded by page\[%%x\]= and succeeded by ;
@Echo Off

for /l %%x in (0, 1, 4) do (
   echo %%x
   For /F "Delims=" %%A In ('FindStr /I "page\[%%x\]=.*;" "test.txt"') Do Call :Sub "%%A" "%%x"
)

Pause
GoTo :EOF

:Sub
Set "Line=%~1"

Set "Up2Sub=%Line:*page[ %~2 ]=%"

Set "SubStr=%Up2Sub:;="&:"%"
Echo %SubStr% > test%~2.json
Exit /B

我遇到的问题是关于这行的:

代码语言:javascript
复制
Set "Up2Sub=%Line:*page[ %~2 ]=%"

变量%~2未正确连接。

将这个%~2变量的值添加到[]之间的SET语句中的语法是什么?

谢谢

示例text.txt

代码语言:javascript
复制
....

page[0]={*****};
page[1]={*****};
page[2]={*****};
page[3]={*****};
page[4]={*****};

....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 19:41:24

要拆分字符串,还可以使用for /f循环:

代码语言:javascript
复制
@Echo Off
for /l %%x in (0, 1, 4) do (
   For /F "Delims=" %%A In ('FindStr /I "page\[%%x\]=.*;" "test.txt"') Do (
     for /f "tokens=2 delims=;=" %%s in ("%%A") do echo %%x: %%s
   )
)
Pause

这会将字符串(%%A)拆分为由;=分隔的标记。对于page[0]={*****};,第一个标记是page[0],然后=是分隔符。第二个令牌为{*****},第三个令牌(在;之后)为空。我们只需要在分隔符中加上';‘就可以去掉它了。

通过分析您的文件并正确选择标记和分隔符,您甚至可以将代码减少到单个for

代码语言:javascript
复制
For /F "tokens=2,4 delims=[]{}" %%A In ('FindStr /I "page\[[0-4]\]=.*;" "test.txt"') Do echo {%%B}>test%%A.json
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57708292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档