Удалить столбцы из CSV с помощью CMD / Batch - PullRequest
0 голосов
/ 23 ноября 2018

У меня в настоящее время есть CSV, который я загружаю у поставщика, в котором есть данные, которые мне не нужны перед импортом в нашу систему.

Мне нужно удалить некоторые столбцы из CSV, используя пакетный файл, так как мыНа Citrix мы не получили PowerShell в качестве опции.

Нет заголовков столбцов, и ниже выглядит CSV:

"9826XXXXXXXXXX217","60007834        ","    10.00","D","22/11/2018"
"9826XXXXXXXXXX324","60008504        ","    12.00","D","22/11/2018"
"9826XXXXXXXXXX414","60010605        ","    12.00","D","22/11/2018"
"9826XXXXXXXXXX013","60011385        ","    12.00","D","22/11/2018"

Мне нужно, чтобы выходные данные были 2-го, 3-го, 5-й столбец.

"60007834        ","    10.00","22/11/2018"
"60008504        ","    12.00","22/11/2018"
"60010605        ","    12.00","22/11/2018"
"60011385        ","    12.00","22/11/2018"

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Если в полях есть запятые,
использовать вызов к югу, передающий аргументы в кавычках:

:: Q:\Test\2018\11\23\SO_53444017.cmd
@Echo off
(for /f "delims=" %%A in (test.csv) do Call :Split %%A
) > test_New.csv
goto :Eof
:Split
Echo(%2,%3,%5

> type test_New.csv
"60007834        ","    10.00","22/11/2018"
"60008504        ","    12.00","22/11/2018"
"60010605        ","    12.00","22/11/2018"
"60011385        ","    12.00","22/11/2018"

Редактировать: обрабатывать все варианты* .csv файлы (добавление _New к имени)

:: Q:\Test\2018\11\23\SO_53444017.cmd
@Echo off
For %%F in (*.csv) do ( 
    (for /f "delims=" %%A in (%%F) do Call :Split %%A
    ) > "X:\Path\%%~nF_New.csv"
)
goto :Eof
:Split
Echo(%2,%3,%5
0 голосов
/ 23 ноября 2018

Не слишком сложно на самом деле.

из командного файла, при условии, что имя файла test.csv

(for /f "tokens=2,3,5 delims=," %%i in (test.csv) do echo %%i,%%j,%%k) > newcsv.csv

Это просто записывает значения 2,3,5 в новый CSV-файл..

Чтобы вместо этого запустить его из cmdline, просто удалите один из каждых %

(for /f "tokens=2,3,5 delims=," %i in (test.csv) do echo %i,%j,%k) > newcsv.csv

Обратите внимание, это предполагает, что данные в ваших значениях не содержат ,, если онинам нужно внести некоторые изменения.

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