Извините, если это кажется базовым, но я новичок в этом. Я думал, что у меня все это сработало, но когда я переместил это в реальную среду, мне нужно, чтобы оно в нем перестало работать.
Все работает до тех пор, пока я не попытаюсь разделить "%result%" В этот момент я беру строку текста, которая выглядит следующим образом

"Avanti B & C 3",9,2,18,1,11.625,"11 5/8",8.98438,"8 31/32",0.76563,"49/64",162,"Partition"...etc

Я хотел бы получить Avanti B & C 3,162, раздел. В качестве теста я попробовал это, но я не могу заставить его вернуть первую строку.

set result="Avanti B & C 3",6,2,9,1,14.625,"14 5/8",82,"82",0.75,"3/4",72,"Unfinished Right End",2181,"3/4 2s Quartersawn Maple",0,1,1,0,0,0,0,0,0,0,0,0,"Tall Cabinet W/ routed pe","","078b0072","1LE","Library 1044","",0,0,"*078b0072*","","Default","N:\CVLabels\078p0072.jpg"
for /f tokens^=1^ delims^=^" %%i in ("%result%") do set _jobname=%%i
echo %_jobname%
pause

* Отредактировано, чтобы добраться до точки, что мне нужно

1 ответ1

1

tokens=1 является значением по умолчанию и не нуждается в выражении.

При извлечении двойных кавычек из строки, содержащей ядовитые символы, такие как <>|& их необходимо экранировать, прежде всего, с помощью каретки.

Проблема заключается в заключении %result% %% в двойные кавычки, это создает пару двойных кавычек в начале, оставляя & кавычек и без экранирования. Когда убегаете, помните, что он потеряется после того, как разоблачится.

:: Q:\Test\2019\02\28\SU_1410257_2.cmd
@Echo off
set result="Avanti B & C 3",6,2,9,1,14.625,"14 5/8",82,"82",0.75,"3/4",72,"Unfinished Right End",2181,"3/4 2s Quartersawn Maple",0,1,1,0,0,0,0,0,0,0,0,0,"Tall Cabinet W/ routed pe","","078b0072","1LE","Library 1044","",0,0,"*078b0072*","","Default","N:\CVLabels\078p0072.jpg"
for /f delims^=^" %%i in ("%result:&=^&%") do set "_jobname=%%i"
echo %_jobname:&=^&%
pause

Образец вывода:

> Q:\Test\2019\02\28\SU_1410257_2.cmd
Avanti B & C 3
Drücken Sie eine beliebige Taste . . .

РЕДАКТИРОВАТЬ вариант согласно запросу в комментарии:

:: Q:\Test\2019\02\28\SU_1410257_3.cmd
@Echo off
set result="Avanti B & C 3",6,2,9,1,14.625,"14 5/8",82,"82",0.75,"3/4",72,"Unfinished Right End",2181,"3/4 2s Quartersawn Maple",0,1,1,0,0,0,0,0,0,0,0,0,"Tall Cabinet W/ routed pe","","078b0072","1LE","Library 1044","",0,0,"*078b0072*","","Default","N:\CVLabels\078p0072.jpg"
for /f "tokens=1,8,9delims=," %%A in ("%result:&=^&%") do (
  set "_jobname=%%~A"
  set "token8=%%B"
  Set "token9=%%C"
)
echo _jobname=%_jobname:&=^&%
echo token8=%token8%
echo token9=%token9%
pause

Образец вывода:

> Q:\Test\2019\02\28\SU_1410257_2.cmd
_jobname=Avanti B & C 3
token8=82
token9="82"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .