TXT Datei bleibt nach Erstellung leer - woran liegt es?
Hallo,
ich bin blutiger Anfänger und hoffe, dass mir wer weiterhelfen kann
Ich habe eine .csv, die wie folgt aufgebaut ist:
Mit nachfolgendem Batch:
@echo off &setlocal
set "quelle=%userprofile%\Desktop\csv--%Date%.csv"
set "CURRENTTIME=%TIME::=.%"
set "ziel=%userprofile%\Desktop\csv--%Date%.txt"
würde ich gerne folgende .txt Ausgabe erwirken:
Irgendwie bleibt die TXT leer - kann mir wer sagen, woran es liegt?
BG
ich bin blutiger Anfänger und hoffe, dass mir wer weiterhelfen kann
Ich habe eine .csv, die wie folgt aufgebaut ist:
Spalte 1;Spalte 2
Wert 1;Wert1a
Wert2;Wert2a
Mit nachfolgendem Batch:
@echo off &setlocal
set "quelle=%userprofile%\Desktop\csv--%Date%.csv"
set "CURRENTTIME=%TIME::=.%"
set "ziel=%userprofile%\Desktop\csv--%Date%.txt"
"%ziel%" (for /f "usebackq skip=1 tokens=1-2 delims=;" %%a in ("%quelle%") DO echo|set /p="%%a;1;")
würde ich gerne folgende .txt Ausgabe erwirken:
Wert 1;1;Wert 2;1
Irgendwie bleibt die TXT leer - kann mir wer sagen, woran es liegt?
BG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 339011
Url: https://administrator.de/contentid/339011
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
An z.B. Deinen Syntaxfehlern.
Fuer das Freitagsstudium empfehle ich mal :
Batch - ein paar Basics die man kennen sollte
https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle#SETLOC ...
https://ss64.com/nt/setlocal.html
Schoenes WE!
BFF
woran liegt es
An z.B. Deinen Syntaxfehlern.
&setlocal
Macht was?set "quelle=
Die " sind sehr weit nach links gerutscht.Fuer das Freitagsstudium empfehle ich mal :
Batch - ein paar Basics die man kennen sollte
https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle#SETLOC ...
https://ss64.com/nt/setlocal.html
Schoenes WE!
BFF
Hi,
deine Batch läuft hier einwandfrei ohne Fehler.
Mit welchem OS führst du das aus?
Ich gehe mal davon aus, dass du den Code auch unter xx.bat oder xx.cmd gespeichert hast.
Setze den Code bitte mal in Code-Tags (Linke Symbolreihe, vorletztes Symbol)
Gruß
deine Batch läuft hier einwandfrei ohne Fehler.
Mit welchem OS führst du das aus?
Ich gehe mal davon aus, dass du den Code auch unter xx.bat oder xx.cmd gespeichert hast.
Setze den Code bitte mal in Code-Tags (Linke Symbolreihe, vorletztes Symbol)
Gruß
Hi,
Ich sehe da keine.
Die CMD-Umgebung lokal nutzen
Nö, die sind richtig.
Gruß
Ich sehe da keine.
&setlocal
Macht was?Die CMD-Umgebung lokal nutzen
set "quelle=
Die " sind sehr weit nach links gerutscht.Nö, die sind richtig.
Gruß
csv--26.05.2017.csv
*.bat
csv--26.05.2017.txt
Grüße
rubberman
Spalte 1;Spalte 2
Wert 1;Wert1a
Wert2;Wert2a
*.bat
@echo off &setlocal
set "quelle=%userprofile%\Desktop\csv--%Date%.csv"
set "ziel=%userprofile%\Desktop\csv--%Date%.txt"
>"%ziel%" (for /f "usebackq skip=1 delims=;" %%a in ("%quelle%") DO <nul set /p "=%%a;1;")
csv--26.05.2017.txt
Wert 1;1;Wert2;1;
Grüße
rubberman
Hi,
kriege ich mit seinem Originalcode auch raus. ;)
Gruß
kriege ich mit seinem Originalcode auch raus. ;)
Gruß
Joa, nichtsdestotrotz ist CURRENTTIME ungenutzt, 2 Tokens zu verarbeiten wo nur eines benötigt wird, macht keinen Sinn und wenn man eine Pipe vermeiden kann (bei der immer beide Seiten in je einem separaten zusätzlichen cmd.exe Prozess ausgeführt werden) sollte man das tun. Ich hatte deinen Kommentar schon vorab gelesen
Grüße
rubberman
Grüße
rubberman
Noch, mein Guter, noch. Die ist schon für zukünftige interessante Ergänzungen vorgesehen.
Willst du dir den Tag versauen,
musst du Frickelcode bauen.
Hi,
Beispielweise
Gruß
Wie kann man hier innerhalb des Batch verursachen, dass es nur ausgeführt wird, wenn die Quell-Datei vorhanden ist?
Beispielweise
if exist "%Quelle%" goto :tuwas
if not exist "%Quelle%" exit
Gruß
Ja.
In Zeile 2 reicht ein Exit oder goto :eof, das beendet die Batchdatei ebenfalls. Das if not exist kannst du dir in dem Fall sparen, da das Programm sowieso dort landet, da ja die Zeile 1 nicht zutrifft.
Alternativ nur in die erste Zeile
schreiben, dann kann Zeile 2 entfallen.
Gruß
In Zeile 2 reicht ein Exit oder goto :eof, das beendet die Batchdatei ebenfalls. Das if not exist kannst du dir in dem Fall sparen, da das Programm sowieso dort landet, da ja die Zeile 1 nicht zutrifft.
Alternativ nur in die erste Zeile
if not exist "%Quelle%" goto :EOF
Gruß
Ich wollte noch was nachtragen, das ging aber nicht mehr:
Du musst natürlich die Definition von Quelle vornehmen, bevor du überprüfst, ob sie auch vorhanden ist, sonst wird das nichts.
Du musst natürlich die Definition von Quelle vornehmen, bevor du überprüfst, ob sie auch vorhanden ist, sonst wird das nichts.
Servus.
Grüße Uwe
$arr = @()
(Import-CSV 'c:\quelle.csv' -delimiter ";") | %{$arr += $_.'Spalte 1' + ';1'}
($arr -join ';') | sc 'c:\ziel.txt'