Пакет Windows - получить вторую строку из файла и сохранить ее - PullRequest
0 голосов
/ 07 марта 2019

У меня есть файл .csv (source.csv), который имеет следующее содержимое:

_Name_;_Id_
IQ-000011;a0A4E000001m9UeUAI
IQ-000010;a0A4E000001m9EhUAI
IQ-000009;a0A4E000001m7v5UAA

Мне нужно либо получить вторую строку (начиная сIQ-000011) для добавления в другой файл (target.csv) или новый файл , который будет создан, который состоит из первых двух строк (The _Name_;_Id_ заголовок + строка IQ-000011).Это должно быть сделано с помощью пакета на компьютере с Windows 10.

Я пробовал использовать set /p и приведенный ниже скрипт, но он не работал правильно.Я хочу сделать это без set /p.Как мне это сделать?

Это сценарий, который я пытался использовать:

3<source.csv (
set /p line1= <&3
set /p line2= <&3
)
echo %line2% >> target.csv

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вот команда, которая выведет первую строку данных из файла .csv.

FOR /F "delims=" %%a IN ('powershell -NoL -NoP "(Get-Content '.\source.csv')[1]"') DO (SET "LINE2=%%~a")
ECHO LINE2 is set to %LINE2%

Другой способ, который может быть более очевидным, - использовать Select-Object для получения нужной строки.

FOR /F "delims=" %%a IN ('powershell -NoL -NoP "Get-Content '.\source.csv' | Select-Object -Skip 1 -First 1"') DO (SET "LINE2=%%~a")

Конечно, если скрипт написан на PowerShell, это проще и понятнее.

$line2 = (Get-Content '.\source.csv')[1]
$line2 = Get-Content '.\source.csv' | Select-Object -Skip 1 -First 1
1 голос
/ 07 марта 2019

Я не могу сказать по вашему вопросу, но вы этого добиваетесь?

@Set "line2="&((Set/P "="&Set/P "line2=")<"source.csv") 2>Nul
@If Defined line2 (Set/P "=%line2%"<Nul&Echo=)>>"target.csv"

Поскольку вы, вероятно, могли бы сделать это таким образом из командного файла, не используя Set /P:

@For /F "UseBackQ Skip=1 Delims=" %%A In ("source.csv")Do @(Echo=%%A)>>"target.csv"&Exit/B
...