Batch oder Powershell

batch_prog

Cadet 2nd Year
Registriert
März 2017
Beiträge
27
Hallo,

ich brauche mal wieder Eure Hilfe, ich komme irgendwie nicht weiter, vielleicht kann mir jemand von Euch helfen:

Derzeit benutze ich nachfolgendes Skript, um Daten aus einer .csv Datei in eine .txt Datei zu schreiben:

HTML:
set quelle=%userprofile%\Temp\quelle.csv
if exist "%quelle%"  goto :prog1
if not exist ""%quelle%"" goto :EOF
:prog1
@echo off &setlocal
set quelle=%userprofile%\Temp\quelle.csv
set CURRENTTIME=%TIME::=.%
set ziel=%userprofile%\Temp\ziel.txt
>"%ziel%" (for /f "usebackq skip=1 delims=;" %%a in ("%quelle%") DO <nul set /p "=%%a;1;%Date%;")


Die quelle.csv sah bisher wie folgt aus:


HTML:
Nummer;Test1;Test2 
52071;72;21 
35298;70;21 
10323;51621;21


Die ziel.txt sah dann wie folgt aus:


HTML:
52071;1;10.08.2017;35298;1;10.08.2017;10323;1;10.08.2017;


Jetzt würde ich gerne den Wert aus Spalte C (Test2) mit in der .txt stehen haben, allerdings gerne so, dass wenn
der Wert bspw. gleich 21, dass dann für 21 bspw. Keine weitere Angabe notwendig! steht, für wenn 22 da steht, soll am besten Weitere Angaben notwendig stehen:

HTML:
52071;1;10.08.2017;Keine weitere Angabe notwendig!;35298;1;10.08.2017;Keine weitere Angabe notwendig!;10323;1;10.08.2017;Keine weitere Angabe notwendig!;

Wie kann ich das am besten umsetzen?
 
würde ca so gehen aber ungetestet:

Code:
$csv = import-csv c:\pfad\quelle.csv -Delimiter ';'
$ziel = c:\pfad\ziel.txt
$datum = get-date -Format "dd.MM.yyy"

foreach($line in $csv){

    switch ($line.Test2) {
        "21" {  $text = 'Keine weitere Angabe notwendig!'}
        "22" {  $text = 'Weitere Angabe notwendig!'}
        Default {$text = "Fehler"}
    }
    write-output -NoNewline $($line.Nummer + ";1;" + $datum + ";" + $text + ";") | Out-File $ziel -Append

}
 
Einfach Deine Schleife erweitern, also aus
Code:
for /f "usebackq skip=1 delims=;" %%a in ("%quelle%") DO <nul set /p "=%%a;1;%Date%;"
z.B. das hier machen:
Code:
for /f "usebackq skip=1 tokens=1,3 delims=;" %%a in ("%quelle%") DO (
		echo|set /p="%%a;1;%Date%;">>%ziel%
		if %%b==21 echo|set /p="Keine weitere Angabe notwendig!;">>%ziel% 
                if %%b==22 echo|set /p="Weitere Angaben notwendig!;">>%ziel%
	)
 
Zurück
Oben