我想知道是否有办法从Windows批处理文件的字符串中始终获取相同的子字符串?我会举一个例子,说明我要做什么:
我们说我有以下字符串
INSERT INTO [Models] ([Id], [Name], [MakeId]) VALUES ('6b29d7cd-224b-4c81-9bb8-597b5b771ae8', 'Scirocco 2l GT', '26422e04-95bd-43f9-923a-9e3b16e8456f')
INSERT INTO [Models] ([Id], [Name], [MakeId]) VALUES ('3bc65d09-0602-42a1-ab68-7ad7bc0615c5', 'Santana GLS', '26422e04-95bd-43f9-923a-9e3b16e8456f')
INSERT INTO [Models] ([Id], [Name], [MakeId]) VALUES ('b5cb64c8-78e7-47ff-95e8-dce7d2482112', 'Kübel 181', '26422e04-95bd-43f9-923a-9e3b16e8456f')
INSERT INTO [Models] ([Id], [Name], [MakeId]) VALUES ('de6f6495-edb6-4dcc-8aa6-a60b362d7280', 'Transporter T3 TD', '26422e04-95bd-43f9-923a-9e3b16e8456f')
我总是有这样的INSERT INTO String,但是,即使有可能,我也想不出如何修整该字符串,所以我只剩下Name值,例如Scirocco 2l GT
或Santana GLS
我有以下代码,它将每一行读入一个变量,然后我需要获取子字符串。但是这是我遇到的问题,我不知道如何获取所需的子字符串
@echo off
set "File2Read=sqlstrings.txt"
If Not Exist "%File2Read%" (Goto: Error)
rem This will read a file into an array of variables and populate it
setlocal EnableExtensions EnableDelayedExpansion
for /f "delims=" %%a in ('Type "%File2Read%"') do (
set /a count+=1
set "Line[!count!]=%%a"
)
rem Display array elements
For /L %%i in (1,1,%Count%) do (
rem echo "Var%%i" is assigned to ==^> "!Line[%%i]!"
for /F [delims=,] %%G IN ("!Line[%%i]!") DO
)
pause>nul
Exit
答案 0 :(得分:1)
下面的代码如何?
@echo off
> nul chcp 1252
for /F "tokens=4 delims=, eol=," %%J in ('^> nul chcp 437 ^& type "test.txt"') do (
for /F "tokens=2 delims=' eol='" %%I in (" %%J") do (
echo(%%I
)
)
这首先提取第四个逗号分隔的标记,它们是(请注意开头的 SPACE ):
'Scirocco 2l GT' 'Santana GLS' 'Kübel 181' 'Transporter T3 TD'
然后提取第二个用撇号分隔的标记,它们是感兴趣的名称:
Scirocco 2l GT Santana GLS Kübel 181 Transporter T3 TD
完成代码中的代码页切换以正确显示子字符串之一中的ü
。