Как получить вторую строку, второй столбец из CSV-файла? - PullRequest
0 голосов
/ 21 января 2019

У меня есть CSV-файл, который выглядит примерно так:

Order ID,Order Date,Ship Date,Ship Mode
CA-2011-103800,2013-01-03,2013-01-07 00:00:00,Standard Class
CA-2011-112326,2013-01-04,2013-01-08 00:00:00,Standard Class

Все, что мне нужно, это получить из первой строки данных дату заказа, т.е. 2013-01-03 в данном случае.

Я попробовал приведенный ниже код, который не решает проблему.

set file=output.csv
for /f "skip=1 tokens=2 delims=," %%A in (%file%) do (echo %%A)

Я новичок.Кто-нибудь может мне помочь с этим?

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Примерно так: команда more пропускает первую строку и просто каждый раз получает второй токен:

, чтобы получить только первое значение:

@echo off
set "file=output.csv"
for /f "tokens=2 delims=," %%i in ('type order.txt ^| more +1') do echo %%i & goto next
:next
pause

или получитьзначение каждого второго столбца:

@echo off
set "file=output.csv"
for /f "tokens=2 delims=," %%i in ('type %file% ^| more +1') do echo %%i
pause
0 голосов
/ 22 января 2019

Просто для удовольствия, вот другая альтернатива.Вы можете перенаправить ваш CSV-файл в цикл, содержащий два оператора set /P - один для использования первой строки, а второй для установки переменной во второй строке.Затем для строки, которая была захвачена, используйте подстановку переменной подстроки, чтобы убрать *, и, *.

@echo off & setlocal
(
    set /P "="
    set /P "val="
) < "output.csv"

set "val=%val:*,=%"
echo %val:,=&rem;%

Но на самом деле, ваше попытанное решение почти правильно.Все, что нужно, - это выйти из цикла после первой итерации.

@echo off & setlocal
set "file=output.csv"
for /f "usebackq skip=1 tokens=2 delims=," %%A in ("%file%") do echo %%A && exit /b
0 голосов
/ 21 января 2019

Это можно сделать ОЧЕНЬ легко, создав массив из данных из file.csv.Используя !Line[2]!, мы можем получить любую строку из файла .csv, которую мы хотим.Просто измените конфигурации Row & Column так, как вам нужно.Это может быть очень полезно для поиска файла .csv.

@echo off
@setlocal enabledelayedexpansion

Rem | Row & Column Information
Set "Row=2"
Set "Column=2"

Rem | Turn Lines To Array Strings
for /f "tokens=* delims=" %%A in ('Type file.csv') do (
    set /a "count+=1"
    set "Line[!count!]=%%A"
)

Rem | Grab Second Column From Second Row
for /f "tokens=%Column% delims=," %%A in ('Echo !Line[%Row%]!') do (
    set "Data=%%A"
)

Echo Second Row, Second Column Data: %Data%

Я оставил новые примечания Rem, чтобы помочь вам в процессе работы со сценарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...