我从这里采用了一些代码:
Extract substring between 2 strings
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我遇到的问题是关于这行的:
Set "Up2Sub=%Line:*page[ %~2 ]=%"变量%~2未正确连接。
将这个%~2变量的值添加到[]之间的SET语句中的语法是什么?
谢谢
示例text.txt
....
page[0]={*****};
page[1]={*****};
page[2]={*****};
page[3]={*****};
page[4]={*****};
....发布于 2019-08-29 19:41:24
要拆分字符串,还可以使用for /f循环:
@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
For /F "tokens=2,4 delims=[]{}" %%A In ('FindStr /I "page\[[0-4]\]=.*;" "test.txt"') Do echo {%%B}>test%%A.jsonhttps://stackoverflow.com/questions/57708292
复制相似问题