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
我从这里采用了一些代码:
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