WENN-DANN für eine bestehende BATCH Datei oder Powershell
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:
Die quelle.csv sah bisher wie folgt aus:
Die ziel.txt sah dann wie folgt aus:
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:
Wie kann ich das am besten umsetzen?
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:
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:
Nummer;Test1;Test2
52071;72;21
35298;70;21
10323;51621;21
Die ziel.txt sah dann wie folgt aus:
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:
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 345943
Url: https://administrator.de/contentid/345943
Ausgedruckt am: 23.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Komoran12,
passe folgende Zeilen an:
Anmerkung:
Zumindest in der Beispiel-CSV hast du teilweise Leerzeichen am Ende der Zeile.
Also steht nicht "21" als dritter Spaltenwert da, sondern "21 ".
Deshalb habe ich auch quick & dirty das Leerzeichen zusätzlich bei "delims=.." ergänzt, weil ich schon auf "21" oder "22" prüfen will.
Warte aber noch mit dem Markieren-als-erledigt; es wird bestimmt gleich noch eine PowerShell-Variante gepostet.
Grüße
Biber
passe folgende Zeilen an:
....
::Alte Zeile "@echo off & setlocal" erweitern
@echo off & setlocal enableDelayedExpansion
...
..
:: Letzte Zeile erweitern
>"%ziel%" (for /f "usebackq skip=1 tokens=1-3delims=; " %%a in ("%quelle%") DO (
Set "txt=x"
if "%%c" == "21" set "txt=info reicht"
if "%%c" == "22" set "txt=Hier fehlt Info"
<nul set /p "=%%a;1;%Date%;!txt!;"
))
Anmerkung:
Zumindest in der Beispiel-CSV hast du teilweise Leerzeichen am Ende der Zeile.
Also steht nicht "21" als dritter Spaltenwert da, sondern "21 ".
Deshalb habe ich auch quick & dirty das Leerzeichen zusätzlich bei "delims=.." ergänzt, weil ich schon auf "21" oder "22" prüfen will.
Warte aber noch mit dem Markieren-als-erledigt; es wird bestimmt gleich noch eine PowerShell-Variante gepostet.
Grüße
Biber