Используйте пакетный файл для удаления строк из CSV с конкретными данными в поле - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть командный файл с 18 полями.Поле 8 является целым числом (1, 2, 3 и т. Д.).Я хочу удалить любую строку, где поле 8 = 13. Код ниже не возвращает всю строку;возвращает значение! line!вместо фактической строки в файле CSV.Как я могу обновить этот код, чтобы удалить любую строку, где поле 8 равно 13?

line1
line2
line3
line4
1,MAY090178,D ,BATMAN HUSH COMPLETE TP,24.99,11.2455,11.25,13,7,         ,62464962,7.61941E+16,1401223176,9.7814E+17,                    ,0,DC COMICS,0
1,NOV141747,F ,BLACK BUTLER GN VOL 19,13,7.54,7.54,13,7,         ,62464962,,316259403,9.78032E+17,                    ,0,YEN PRESS,127143
2,MAY151682,F ,BLACK BUTLER GN VOL 20,13,7.54,15.08,13,7,         ,62464962,,316305014,9.78032E+17,                    ,0,YEN PRESS,127143
1,AUG180208,D ,BULLY WARS #2 CVR A CONLEY,3.99,1.7955,1.8,13,7,         ,62464962,7.09853E+16,,,                    ,0,IMAGE COMICS,140749
1,OCT180162,D ,BULLY WARS #4 CVR A CONLEY,3.99,1.7955,1.8,13,7,         ,62464962,7.09853E+16,,,                    ,0,IMAGE COMICS,140749
10,SUPPLY123,J ,COMICARE LONG COMIC BOX (SOLD IN 10) (NET),2.53,2.533,25.33,12,7,         ,62464962,6.0326E+11,,,                    ,0,,0
2,SEP180823,D ,FANTASTIC FOUR #4,3.99,1.8753,3.75,1,7,         ,62464962,7.59606E+16,,,                    ,0,MARVEL COMICS,140538
1,JUN160567,E ,FROM HELL HC,39.99,19.995,20,3,7,         ,62464962,,1603093974,9.7816E+17,                    ,0,IDW - TOP SHELF,0
2,APR162146,F ,FRUITS BASKET COLLECTORS ED TP VOL 01,20,11.6,23.2,3,7,         ,62464962,,316360163,9.78032E+17,                    ,0,YEN PRESS,136243
1,JUL110352,E ,GODZILLA KINGDOM OF MONSTERS TP VOL 01,17.99,8.995,9,3,7,         ,62464962,,1613770162,9.78161E+17,                    ,0,IDW PUBLISHING,129254

@echo off & Setlocal EnableDelayedExpansion

rem | Remove category 13 lines

rem SET "sourcedir=d:\data"
rem SET "destdir=d:\data"
rem SET "filename=%sourcedir%\file.csv"
rem SET "outfile=%destdir%\outputfile.csv"
Setlocal EnableDelayedExpansion

for /f "tokens=1,* delims=," %%A in (file.csv) do (
    SET line=%%A
    SET string=%%H
    if NOT "string"=="13" >> file_13.csv echo(!line!
    endlocal  
)

@echo on

1 Ответ

0 голосов
/ 29 декабря 2018

"tokens=1,* delims=," %%A говорит парсеру разбить строку на запятые, поставить первый токен в %%A и все остальное в %%B.Если вы хотите больше переменных, вы должны указать, сколько токенов вы ожидаете.Кроме того, после того, как вы разбили строку, нет возможности получить доступ к нерасщепленной строке, поэтому вам придется перестроить ее вручную.

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1-8,* delims=," %%A in (file.csv) do (
    set "string=%%H"
    if not "!string!"=="13" (
        >>file_13.csv echo %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...