Tekst vervangen voor csv bestand met script

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • DennisdeReus
  • Registratie: Maart 2017
  • Laatst online: 07-01 15:45
Mijn vraag
Ik wil dat een script tekst vervangt van een niet csv bestand en dat moet een csv bestand gaan worden met speciale karakters <>.

Het volgende lukt mij niet om dit voor elkaar te krijgen:
"</row><row>" --> "</row>enter<row>" (dus "<row>" moet naar een nieuwe regel)
"</artikelnummer><maat>" --> ", "
"<products>" --> "" (vervangen door niks)


Relevante software en hardware die ik gebruik
N.V.T.

Wat ik al gevonden of geprobeerd heb

code:
1
2
3
4
5
6
7
8
9
10
   setlocal enableextensions enabledelayedexpansion

    (for /f "tokens=*" %%f in (producten.csv) do if not "%%f"=="" (
            set "line=%%f"
            set "line=!line:maat="
            echo(!line!
    )) > b.csv

    endlocal
pause




code:
1
2
type file.csv |repl "products" "" |repl "N\.A\." "-2" >newfile.csv
pause




code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
setLocal enableDelayedExpansion

set filename=producten.csv
set "originalText1=maat"
set "replacedText1="
set "originalText2=N.A."
set "replacedText2=-2"

for /f "tokens=*" %%a in ('type %filename%') do (
    set "line=%%a"
    if defined line (
        call set "line=%%line:%originalText1%=%replacedText1%%%"
        call set "line=%%line:%originalText2%=%replacedText2%%%"
        echo !line!>> test.csv
    ) else (
        echo.
    )
)
pause



Alvast bedankt!

[ Voor 1% gewijzigd door DennisdeReus op 10-07-2017 13:52 . Reden: Heb [code][/code] functie toegevoegt aan bericht ]

Beste antwoord (via DennisdeReus op 17-07-2017 15:51)


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Het is me nog steeds een raadsel hoe jij je de output voorstelt. Je beschrijft het zo onduidelijk dat ik er niks mee kan. Maar met de XML van @Haan als input en een paar regels Powershell kom ik op een CSV die eruit ziet als iets waar je verder mee kunt.

In Powershell doe je dat zo:
code:
1
2
$Data = [Xml]( Get-Content -Path 'C:\Temp\producten.xml' )
$Data.Products.Row | Export-Csv -Path 'C:\Temp\producten.csv' -Delimiter ',' -NoTypeInformation


En de output is dan:
code:
1
2
3
4
5
6
"artikelnummer","maat","voorraadniveau","naleverbaar","barcode"
"3430-53-10","36","0","0",""
"3430-53-10","38",,"0",""
"3430-53-10","40","0","0",""
"3430-53-10","42","0","0","4042095929657"
"3430-53-10","44","0","0",""

Alle reacties


Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Ik denk niet dat ik je hiermee kan helpen, maar wel even het volgende:
Pas je OP even aan en vermeld in ieder geval even om welke taal het gaat.

De code mag je tussen codebloks zetten...

code:
1
[code]zo dus[/code]
Dan ziet het er voor mensen die je willen helpen er iets leesbaarder uit
d:)b
Het volgende lukt mij niet om dit voor elkaar te krijgen:
[...]dus "<row>" moet naar een nieuwe regel
heb je \n al eens geprobeerd, dat is vrij universeel als return character...

[ Voor 24% gewijzigd door Harrie_ op 27-06-2017 16:20 ]

Hoeder van het Noord-Meierijse dialect


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Harrie_ schreef op dinsdag 27 juni 2017 @ 16:17:

heb je \n al eens geprobeerd, dat is vrij universeel als return character...
Niet in een batch file.

Dit moet je ook niet in een batch file doen. Zo te zien wordt er XML omgezet naar CSV. Dat kan toch ook gewoon in Excel?
En als je het perse wilt scripten: In Powershell is dit simpel. Gewoon importeren met Get-Content (of één van de andere manieren om in Powershell XML te lezen) en exporteren met Export-CSV. Appeltje eitje.

Acties:
  • 0 Henk 'm!

  • DennisdeReus
  • Registratie: Maart 2017
  • Laatst online: 07-01 15:45
Sorry voor de late reactie maar ik heb het erg druk gehad de laatste tijd.
downtime schreef op dinsdag 27 juni 2017 @ 22:41:
[...]

Niet in een batch file.

Dit moet je ook niet in een batch file doen. Zo te zien wordt er XML omgezet naar CSV. Dat kan toch ook gewoon in Excel?
En als je het perse wilt scripten: In Powershell is dit simpel. Gewoon importeren met Get-Content (of één van de andere manieren om in Powershell XML te lezen) en exporteren met Export-CSV. Appeltje eitje.
Ik weet niet of het een XML file formaat is.
Het bestand is nu opgeslagen als een ASP bestand.
Ik heb ook inmiddels gezocht op internet maar kom er niet uit.
Openen in Excel lukt niet.
Ik heb hieronder de eerste 5 regels code geplakt en in dit bestand zitten geen enters.
De file eindigt met </products>

Origineel:
code:
1
<products><row><artikelnummer>3430-53-10</artikelnummer><maat>36</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row><row><artikelnummer>3430-53-10</artikelnummer><maat>38</maat><naleverbaar>0</naleverbaar><barcode></barcode></row><row><artikelnummer>3430-53-10</artikelnummer><maat>40</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row><row><artikelnummer>3430-53-10</artikelnummer><maat>42</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode>4042095929657</barcode></row><row><artikelnummer>3430-53-10</artikelnummer><maat>44</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row>


Zelf enters toegevoegd:
code:
1
2
3
4
5
<products><row><artikelnummer>3430-53-10</artikelnummer><maat>36</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row>
<row><artikelnummer>3430-53-10</artikelnummer><maat>38</maat><naleverbaar>0</naleverbaar><barcode></barcode></row>
<row><artikelnummer>3430-53-10</artikelnummer><maat>40</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row>
<row><artikelnummer>3430-53-10</artikelnummer><maat>42</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode>4042095929657</barcode></row>
<row><artikelnummer>3430-53-10</artikelnummer><maat>44</maat><voorraadniveau>0</voorraadniveau><naleverbaar>0</naleverbaar><barcode></barcode></row>


Ik hoop dat iemand me verder kan helpen.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:29

Haan

dotnetter

Ja dit is XML (ik hoop dat ik je verkeerd heb begrepen, dat je dat niet weet wat XML is? :X)

XML:
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
<products>
    <row>
        <artikelnummer>3430-53-10</artikelnummer>
        <maat>36</maat>
        <voorraadniveau>0</voorraadniveau>
        <naleverbaar>0</naleverbaar>
        <barcode/>
    </row>
    <row>
        <artikelnummer>3430-53-10</artikelnummer>
        <maat>38</maat>
        <naleverbaar>0</naleverbaar>
        <barcode/>
    </row>
    <row>
        <artikelnummer>3430-53-10</artikelnummer>
        <maat>40</maat>
        <voorraadniveau>0</voorraadniveau>
        <naleverbaar>0</naleverbaar>
        <barcode/>
    </row>
    <row>
        <artikelnummer>3430-53-10</artikelnummer>
        <maat>42</maat>
        <voorraadniveau>0</voorraadniveau>
        <naleverbaar>0</naleverbaar>
        <barcode>4042095929657</barcode>
    </row>
    <row>
        <artikelnummer>3430-53-10</artikelnummer>
        <maat>44</maat>
        <voorraadniveau>0</voorraadniveau>
        <naleverbaar>0</naleverbaar>
        <barcode/>
    </row>
</products>

Voor Notepad++ icm XML Tools plugin een fluitje van een cent om te formatteren (al miste je nog de laatste tag om products af te sluiten.

Kater? Eerst water, de rest komt later


Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Het is me nog steeds een raadsel hoe jij je de output voorstelt. Je beschrijft het zo onduidelijk dat ik er niks mee kan. Maar met de XML van @Haan als input en een paar regels Powershell kom ik op een CSV die eruit ziet als iets waar je verder mee kunt.

In Powershell doe je dat zo:
code:
1
2
$Data = [Xml]( Get-Content -Path 'C:\Temp\producten.xml' )
$Data.Products.Row | Export-Csv -Path 'C:\Temp\producten.csv' -Delimiter ',' -NoTypeInformation


En de output is dan:
code:
1
2
3
4
5
6
"artikelnummer","maat","voorraadniveau","naleverbaar","barcode"
"3430-53-10","36","0","0",""
"3430-53-10","38",,"0",""
"3430-53-10","40","0","0",""
"3430-53-10","42","0","0","4042095929657"
"3430-53-10","44","0","0",""

Acties:
  • 0 Henk 'm!

  • DennisdeReus
  • Registratie: Maart 2017
  • Laatst online: 07-01 15:45
downtime schreef op maandag 10 juli 2017 @ 18:51:
Het is me nog steeds een raadsel hoe jij je de output voorstelt. Je beschrijft het zo onduidelijk dat ik er niks mee kan. Maar met de XML van @Haan als input en een paar regels Powershell kom ik op een CSV die eruit ziet als iets waar je verder mee kunt.

In Powershell doe je dat zo:
code:
1
2
$Data = [Xml]( Get-Content -Path 'C:\Temp\producten.xml' )
$Data.Products.Row | Export-Csv -Path 'C:\Temp\producten.csv' -Delimiter ',' -NoTypeInformation


En de output is dan:
code:
1
2
3
4
5
6
"artikelnummer","maat","voorraadniveau","naleverbaar","barcode"
"3430-53-10","36","0","0",""
"3430-53-10","38",,"0",""
"3430-53-10","40","0","0",""
"3430-53-10","42","0","0","4042095929657"
"3430-53-10","44","0","0",""
@downtime
De file input heb ik zelf niet gemaakt of laten generen dit is een bestand dat ik van een systeem downloaden kan en ik zit niet in deze materie. Doordat ik een ASP file download wist ik niet dat het om een XML bestand ging. Misschien was het hierdoor mijn vraag een beetje vaag.
Bedankt voor je Powershell script eindelijk een script dat wil werken had op internet inmiddels ook al veel gevonden maar niks wilde werken. Dit is uiteindelijk het simpelste en de enigste script die wil werken. SUPER! _/-\o_ _/-\o_ _/-\o_ _/-\o_

Nogmaals iedereen bedankt voor de hulp. _/-\o_ _/-\o_ _/-\o_ _/-\o_
Het probleem is opgelost.
Pagina: 1