none
for /F "delims=кавычки" как правильно реализовать? RRS feed

  • Вопрос

  • есть тесктовик в котором то что мне нужно разделено символом кавычек ". Как мне в BAT'нике вынуть то что мне нужно?

    вот пример

    FOR /F "tokens=2 usebackq delims=кавычки" %%i in ( "c:\file.txt" ) do echo %%i

    20 апреля 2011 г. 11:51

Ответы

  • Вообще по уму в скриптинг бы этот вопрос.

    А вообще ответ нашелся простым запросом в Гугль

        @echo off
        setlocal EnableDelayedExpansion
        for /f "tokens=*" %%a in (test.txt) do (
        set x=%%a
        set x=!x:"= !
        for /f "tokens=1-3" %%a in ("!x!") do echo %%a %%b %%c
        )

     

    и собственно ссылка на источник

    • Предложено в качестве ответа _dim_ 21 апреля 2011 г. 5:58
    • Помечено в качестве ответа Vinokurov YuriyModerator 21 апреля 2011 г. 12:05
    20 апреля 2011 г. 13:50

Все ответы

  • Вообще по уму в скриптинг бы этот вопрос.

    А вообще ответ нашелся простым запросом в Гугль

        @echo off
        setlocal EnableDelayedExpansion
        for /f "tokens=*" %%a in (test.txt) do (
        set x=%%a
        set x=!x:"= !
        for /f "tokens=1-3" %%a in ("!x!") do echo %%a %%b %%c
        )

     

    и собственно ссылка на источник

    • Предложено в качестве ответа _dim_ 21 апреля 2011 г. 5:58
    • Помечено в качестве ответа Vinokurov YuriyModerator 21 апреля 2011 г. 12:05
    20 апреля 2011 г. 13:50
  • спасибо, попробую...
    отлично - то что надо спасибо!
    21 апреля 2011 г. 4:10
  • скрипт оказался не полноценным:
    содержание bat:

    @echo off
    setlocal EnableDelayedExpansion
    for /f "tokens=*" %%a in (test.txt) do (
    set x=%%a
    set x=!x:"= !
    for /f "tokens=1-3" %%a in ("!x!") do echo %%a %%b %%c> file.txt
    )

    содержание файла test.txt
    "hello world"hello1 world1"hello2 world2"

    содержание результата - файла file.txt
    hello world hello1

    вопрос стоит что разделителями являются кавычки - и например надо вычленить 2й элемент чтобы результат был (без пробела на конце)
    hello1 world1

    жду ответа.

    22 апреля 2011 г. 5:49
  •     @echo off
        setlocal EnableDelayedExpansion
        for /f "tokens=* delims=," %%a in (test.txt) do (
        echo %%a - input string
        set x=%%a
        set x=!x:"=,!
        for /f "tokens=1-3 delims=," %%a in ("!x!") do echo %%b
        )

    -------

    H:\LocalFiles\projects\TEST TEST TEST>delim.cmd
    "hello world"hello1 world1"hello2 world2" - input string
    hello1 world1

    -------

    К комментарию о неполноценности. Телепатов нема, что вам там конкретно нужно парсить никто не знает. Вам привели пример который нужно уже Вам допилить напильником.

    В даннном случае как промежуточный разделитель(до этого использовался пробел\табуляция) испольюзуются запятые.

    Не нравится такое решение - используйте VBS или PoSh, там проще.

    25 апреля 2011 г. 9:55
  • во! то что надо!
    Спасибо огромное!

    26 апреля 2011 г. 9:25
  • Есть простое решение без лишнего текста:

    FOR /F tokens^=2^ delims^=^" %%i in ( "c:\file.txt" ) do echo %%i
    

    19 ноября 2019 г. 11:52