Zeile aus CSV Datei in eine TXT(ini) datei kopieren.
Hallo,
eine CSV-Datei soll am besten zyklisch untersucht werden. Der Inhalt aus einer bestimmten Zeile soll dann in eine bestimmte Position einer TXT-Datei geschrieben werden. Dies soll aber auch nur geschehen wenn der Inhalt aus dieser Zeile nicht mit dem Inhalt aus der Zieldatei übereinstimmt.
Kann mir jemand helfen?
Grüße,
Thomas
eine CSV-Datei soll am besten zyklisch untersucht werden. Der Inhalt aus einer bestimmten Zeile soll dann in eine bestimmte Position einer TXT-Datei geschrieben werden. Dies soll aber auch nur geschehen wenn der Inhalt aus dieser Zeile nicht mit dem Inhalt aus der Zieldatei übereinstimmt.
Kann mir jemand helfen?
Grüße,
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 207903
Url: https://administrator.de/forum/zeile-aus-csv-datei-in-eine-txtini-datei-kopieren-207903.html
Ausgedruckt am: 02.02.2025 um 10:02 Uhr
14 Kommentare
Neuester Kommentar
Hallo hansbaer und willkommen im Forum!
Wenn du einen bestimmten Batch oder ein bestimmtes VB-Script dafür verwendest, wird das bestimmt funktionieren ...
BTW:
Grüße
bastla
Wenn du einen bestimmten Batch oder ein bestimmtes VB-Script dafür verwendest, wird das bestimmt funktionieren ...
BTW:
Dies soll aber auch nur geschehen wenn der Inhalt aus dieser Zeile nicht mit dem Inhalt aus der Zieldatei übereinstimmt.
Was würde denn passieren, wenn bei übereinstimmendem Inhalt trotzdem geschrieben würde?Grüße
bastla
Hallo hansbaer,
- bestimmte Zeile in
- Zielstelle suchen und finden
- überprüfen, was da schon steht
Und das alles ohne konkrete Info. Echt klasse Fragestellung.
@hansbaer ich empfehle
Grüsse!
- bestimmte Zeile in
csv
finden- Zielstelle suchen und finden
- überprüfen, was da schon steht
Und das alles ohne konkrete Info. Echt klasse Fragestellung.
@hansbaer ich empfehle
EXCEL
.Grüsse!
Hallo hansbaer!
Na dann als VB-Script (Dateityp ".vbs"):
Der Suchbegriff muss unter Berücksichtigung von Groß-/Kleinschreibung angegeben werden und wird vollständig durch den gefundenen Wert ersetzt. Die Textdatei wird dabei (ohne Sicherungskopie) durch die neue Version überschrieben.
Grüße
bastla
Na dann als VB-Script (Dateityp ".vbs"):
Ein = "D:\Deine.csv"
Aus = "D:\Deine.txt"
Zeile = 2
Spalte = 2
Delim = ";"
Suche = "alterText"
Set fso = CreateObject("Scripting.FileSystemObject")
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline)
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1)
DatAus = fso.OpenTextFile(Aus).ReadAll
fso.CreateTextFile(Aus).Write Replace(DatAus, Suche, Wert)
Grüße
bastla
... und als Batch dann so:
Gruss!
@echo off &setlocal
set "fcsv=file1"
set "ftxt=file2"
set "fnew=file3"
for /f "skip=1tokens=2delims=;" %%i in (%fcsv%) do if not defined txtneu set "txtneu=%%i"
(for /f "delims=" %%i in (%ftxt%) do (
if "%%i"=="alterText" (echo(%txtneu%) else echo(%%i
))>%fnew%
type %fnew%
Gruss!
Hallo hansbaer!
Dann geht es wohl eher doch um einen nur teilweise bestimmten Text ...
Unter der Annahme, dass also die relevante Zeile nur mit dem Suchtext beginnen muss, sollte das so gehen:
Grüße
bastla
Dann geht es wohl eher doch um einen nur teilweise bestimmten Text ...
Unter der Annahme, dass also die relevante Zeile nur mit dem Suchtext beginnen muss, sollte das so gehen:
Ein = "D:\Deine.csv"
Aus = "D:\Deine.txt"
Zeile = 2
Spalte = 2
Delim = ";"
Suche = "D:\InfoMedia\Layout\TFTupdate"
Set fso = CreateObject("Scripting.FileSystemObject")
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline)
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1)
DatAus = Split(fso.OpenTextFile(Aus).ReadAll, vbNewline)
SLen = Len(Suche)
For i = 0 To UBound(DatAus)
If Left(DatAus(i), SLen) = Suche Then DatAus(i) = Suche & Wert
Next
fso.CreateTextFile(Aus).Write Join(DatAus, vbNewline)
bastla
@echo off &setlocal
set "fcsv=file1"
set "ftxt=file2"
set "fnew=file3"
set "core=D:\InfoMedia\Layout\TFTupdate"
for /f "skip=1tokens=2delims=;" %%i in (%fcsv%) do if not defined txtneu set "txtneu=%%i"
(for /f "delims=" %%i in (%ftxt%) do (
echo("%%i"|findstr /c:"%core%" >nul && (echo(%core%%txtneu%) || echo(%%i
))>%fnew%
type %fnew%
Gruss!
Zitat von @hansbaer:
Wenn bei euren o.g. Lösungen bei ersten mal DSW aus der CSV in "alterText" geschrieben wird, findet die batch bei
der nächsten Änderung der CSV ja "alterText" nicht mehr.
Wenn bei euren o.g. Lösungen bei ersten mal DSW aus der CSV in "alterText" geschrieben wird, findet die batch bei
der nächsten Änderung der CSV ja "alterText" nicht mehr.
Bei meiner Lösung wird die Variable
core
wieder gefunden, weil sie unverändert bleibt.Gruss!
Hallo hansbaer!
Gesucht wird durch beide Ansätze nach einer Zeile, die mit "D:\InfoMedia\Layout\TFTupdate" beginnt - das tut sie nach der Ergänzung durch "DSW" oder whatever ja immer noch ...
Damit der Dateityp auch geschrieben wird, wäre mein Script folgendermaßen abzuändern / zu ergänzen:
Grüße
bastla
Nur habe ich in meinem letzten beitrag leichtsinnigerweise die Dateiendung weggelassen
Gibt es vielleicht sonst noch etwas, das wir wissen sollten (und nicht ohnehin Deinem Eröffnungsbeitrag entnehmen können )?Wenn bei euren o.g. Lösungen bei ersten mal DSW aus der CSV in "alterText" geschrieben wird, findet die batch bei der nächsten Änderung der CSV ja "alterText" nicht mehr.
Ist das eine Annahme oder Ergebnis Deiner Tests?Gesucht wird durch beide Ansätze nach einer Zeile, die mit "D:\InfoMedia\Layout\TFTupdate" beginnt - das tut sie nach der Ergänzung durch "DSW" oder whatever ja immer noch ...
Damit der Dateityp auch geschrieben wird, wäre mein Script folgendermaßen abzuändern / zu ergänzen:
Ein = "D:\Deine.csv"
Aus = "D:\Deine.txt"
Zeile = 2
Spalte = 2
Delim = ";"
Suche = "D:\InfoMedia\Layout\TFTupdate"
Typ = ".exe"
Set fso = CreateObject("Scripting.FileSystemObject")
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline)
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1)
DatAus = Split(fso.OpenTextFile(Aus).ReadAll, vbNewline)
SLen = Len(Suche)
For i = 0 To UBound(DatAus)
If Left(DatAus(i), SLen) = Suche Then DatAus(i) = Suche & Wert & Typ
Next
fso.CreateTextFile(Aus).Write Join(DatAus, vbNewline)
bastla