代码之家  ›  专栏  ›  技术社区  ›  rm -rf

Windows批处理脚本获取始终具有相同结构的子字符串

  •  0
  • rm -rf  · 技术社区  · 7 年前

    假设我有以下条件

    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')
    

    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
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   aschipfl    7 年前

    下面的代码呢:

    @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
        )
    )
    

    这首先提取第四个逗号分隔的标记,它们是 空间 ):

     'Scirocco 2l GT'
     'Santana GLS'
     'Kübel 181'
     'Transporter T3 TD'
    

    Scirocco 2l GT
    Santana GLS
    Kübel 181
    Transporter T3 TD
    

    代码中的代码页切换完成,以显示 ü 在一个子字符串中正确。

    推荐文章