Windows 批量 SET 语法

Windows Batch SET Syntax

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

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 没有正确连接。

获取添加到 [] 之间的 SET 语句的 %~2 变量值的语法是什么?

谢谢

样本text.txt

....

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

....

要拆分字符串,您还可以使用 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.json