Fråga : Hur man läser en CSV using Windows befalla fodrar

För en orienterad bassicly spara applikationen jag måste att skriva några tillvägagångssätt. Ett av dem läser en csv sparar och skriver två annat sparar baserat på informationen i den första contencen för file.
De av mata in sparar är likt:

#, 6/29/2010,
222857293,2857293, V.E.C. Klanta, en/of V.E.C. Klantc, 3
223509302,3509302, V.E.C.Klantb, 9

The FÖR befaller att använda för I-förmiddag har besvärar med det tomt sätter in (fourthen) i jumbon fodrar. Skrivahandlingen (eka i snippeten), göras beroende av 3na eller 9na i jumbon sätter in. Sätta in nu 4 är tomt sätter in ska 4 får värdera av sätter in 5.
Is där a långt för att förhindra denna beheavior av FÖR befaller?

Thanks i avancerat!
John
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
" codeBody " " notpretty class= " för :: Skapa förmyndaregruppen :: 9 = KB :: 3 = ABN :: ******************************************************, : create_custodian_group FÖR /F ”delims= för skip=1 tokens=1,2,3,4,5,” %%G in (%a_vanvec%vecacc.csv) gör ( appell: s_write_group %%G %%H ”%%I” ”%%J” %%K) GOTO: einde : s_write_group om inte [== för %5] [3] ( om inte [== för %5] [9] ( eka 1=%1 2=%2 3=%3 4=%4 5=%5 kodifierar orätt ) annars ( eka KB = %1 - %5 ) ) eka annars abn = %1 - %5 :: avsluta av subroutine GOTO: eof : einde paus
" klar "

Svar : Hur man läser en CSV using Windows befalla fodrar

Det finns inte any långt att berätta FÖR befaller inte till delims i rad för fest som en singeldelim.  Långt jag fungerar typisk runt om denna är ”pre processaa” mata in fodrar och söker efter parar av delims med ingenting dem emellan.  Jag byter ut dessa med något in - mellan delimsna, som jag kan därefter kontrollera för i kodifiera och festen som en saknad eller tomt, värdera.

, om så mata in fodrar, var

aaa, bbb

Och jag önskar att bearbeta 4 värderar ganska än 2na som FÖR ska uppsamling vid standard, då mig konvertera först fodra till

aaa @, @, bbb

och därefter mata det in i FÖR och parse på komma.

Förmiddag som I fäster kodifiera med denna ändring, låter mig vet hur den går för dig.  Jag gjorde en koppla ihop av andra lilla justeringar, låter mig vet att vad ifrågasätter, du har.

- nödvändigt att tillfoga den setlocal EnableDelayedExpansionen, så att jag kunde uppdatera och använda en variabelinsida en kretsa

- definierade mata in sparar - namnge som en variabel, och citerat det i det huvudsakligt FÖR det läser den, för att behandla fallet var filenamen kunde inkludera utrymmen

- det yttre FÖR kretsar läser det helt fodrar, då vi tilldelar det till en variabel, så att vi kan byta ut ”det tomt” värderar med en placeholder (jag använde @, kunde vara något dig något liknande),

- därefter another FÖR mycket något liknande din original- parses resultanten stränger och appeller subroutinen

- I tillfogade en EKA av inputlinen, för och efter omvandlingen precis så dig kan se hur den fungerar, dessa skulle är borttagen mer sistnämnd

Hoppas detta hjälper

~bp
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
@echo av
setlocal EnableDelayedExpansion
 
REM som skapar förmyndaregruppen
REM  9 = KB
REM  3 = ABN
Rem-******************************************************,
uppsättning InputFile=%a_vanvec%vecacc.csv
 
: create_custodian_group
  
för /F tokens=*” %%A ”för usebackq skip=1 (”%InputFile%”) gör in (
  uppsättning InputLine=%%A
  eka FÖR: ! InputLine!
  för /L %%B (1.1.20) gör in (
    fastställda InputLine=! InputLine: , =, @!
  )
  eka AFTER: ! InputLine!
  för /F ”tokens=1--5delims=,” %%G in (”! InputLine! ”) gör (
    appell: s_write_group %%G %%H ”%%I” ”%%J” %%K
  )
)
GOTO: einde
  
: s_write_group
  om inte [== för %5] [3] (
    om inte [== för %5] [9] (
      eka 1=%1 2=%2 3=%3 4=%4 5=%5 kodifierar orätt
    ) annars (
      eka KB = %1 - %5
    )
  ) annars (
    eka abn = %1 - %5
  )
 
  REM avslutar av subroutine
  GOTO: eof
 
: einde
  paus
Andra lösningar  
 
programming4us programming4us