Справка по пакетному файлу: невозможно сохранить значения, проанализированные из файла .csv, в переменные

385
A.Garg

У меня есть файл .CSV (через запятую), из которого мне нужно извлечь значения в определенных столбцах, а затем мне нужно подстроку этих значений. Значения подстроки должны быть записаны в выходной файл.

Однако, когда я пытаюсь поместить оператор set в цикл for / f, значения не сохраняются в переменных, в результате чего подстрока не работает должным образом.

Пожалуйста, найдите фрагмент ниже и посоветуйте:

-suppose abcdefgh это значение в %% d

SETLOCAL ENABLEDELAYEDEXPANSION  for /F "usebackqtokens=1-4*delims=^," %%a in (temp.csv) do ( echo %%d set _id=%%d echo _clnt: %!_id!:~5,3% echo %%a,%%b,%%c,!_clnt! >> output.csv ) 

Выход сверху:

abcdefgh _clnt: ~5,3 

Ожидаемый результат:

abcdefgh _clnt: fgh 
-1
Ваша пятая строка должна быть `set _clnt =! _ Id: ~ 5,3!` Worthwelle 5 лет назад 2
Привет, я пробовал это, но это выдает мне вывод 'set _clnt =! _ Id: ~ 5,3!' поскольку он рассматривает _id строку и не сохраняет значение _id в этой команде set A.Garg 5 лет назад 0
Когда я запускаю его с модификацией, которую я упомянул (плюс еще один `echo _clnt:! _Clnt!`), Он дает именно тот результат, который вы показали в своем "Ожидаемом результате", и значение `_clnt` также отображается в` output. CSV` файл. Что бы вы хотели, чтобы произошло по-другому? Worthwelle 5 лет назад 0

1 ответ на вопрос

0
Michael Harvey

Это работает для меня

@echo off SETLOCAL ENABLEDELAYEDEXPANSION  for /F "usebackqtokens=1-4*delims=^," %%a in (temp.csv) do ( echo %%d set id=%%d set _clnt=!_id:~5,3! echo _clnt: !_clnt! echo %%a,%%b,%%c,!_clnt! >> output.csv ) 

Содержимое temp.csv

x,y,z,abcdefgh 

Консольный вывод пакетного скрипта:

abcdefgh _clnt: fgh 

Содержимое файла output.csv после запуска пакетного скрипта:

x,y,z,fgh