Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zeile aus CSV Datei in eine TXT(ini) datei kopieren.

Frage Entwicklung Batch & Shell

Mitglied: hansbaer

hansbaer (Level 1) - Jetzt verbinden

12.06.2013 um 15:18 Uhr, 1431 Aufrufe, 14 Kommentare

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
Mitglied: bastla
12.06.2013 um 16:49 Uhr
Hallo hansbaer und willkommen im Forum!

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
Bitte warten ..
Mitglied: hansbaer
12.06.2013 um 16:59 Uhr
Hallo bastla,

was passieren würde? ich denke nicht viel...
da das ganze aber auch einer schwachbrüstigen Maschine läuft muss nicht unbedingt Kapazität verwendet werden.
Falls das aber keine Rolle spielt kann es dann natürlich trotzdem geschrieben werden.

Grüße,

hansbaer
Bitte warten ..
Mitglied: bastla
12.06.2013 um 17:08 Uhr
Hallo hasbaer!
was passieren würde? ich denke nicht viel...
Hatte ich vermutet; das unnötige Schreiben lässt sich aber bestimmt auch verhindern ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
12.06.2013 um 17:08 Uhr
Hallo hansbaer,

- 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!
Bitte warten ..
Mitglied: hansbaer
12.06.2013 um 18:25 Uhr
Hallo,

entschuldigt bitte wenn ich nicht genügend Informationen geliefert habe..
hier der Inhalt meiner CSV Datei.


MandantNr;MandantID
2;DSW

Und zwar soll der Inhalt aus Spalte 2 Zeile 2 also hier DSW

in eine Txt Datei mit dem Inhalt:

1234567
alterText
987654


an die Stelle "alterText" kopiert und die TXT Datei dann gespeichert werden.

Excel kommt nicht in Frage, da das ganze auf mehreren Systemen läuft und ich ja nicht für jeden Rechner eine Excel-Version kaufen möchte..
Bitte warten ..
Mitglied: bastla
12.06.2013 um 19:52 Uhr
Hallo hansbaer!

Na dann als VB-Script (Dateityp ".vbs"):
01.
Ein = "D:\Deine.csv" 
02.
Aus = "D:\Deine.txt" 
03.
Zeile = 2 
04.
Spalte = 2 
05.
Delim = ";" 
06.
Suche = "alterText" 
07.
 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
10.
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1) 
11.
 
12.
DatAus = fso.OpenTextFile(Aus).ReadAll 
13.
fso.CreateTextFile(Aus).Write Replace(DatAus, Suche, Wert)
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
Bitte warten ..
Mitglied: Endoro
12.06.2013, aktualisiert um 20:12 Uhr
... und als Batch dann so:
01.
@echo off &setlocal 
02.
set "fcsv=file1" 
03.
set "ftxt=file2" 
04.
set "fnew=file3" 
05.
 
06.
for /f "skip=1tokens=2delims=;" %%i in (%fcsv%) do if not defined txtneu set "txtneu=%%i" 
07.
(for /f "delims=" %%i in (%ftxt%) do ( 
08.
	if "%%i"=="alterText" (echo(%txtneu%) else echo(%%i 
09.
))>%fnew% 
10.
type %fnew%
Gruss!
Bitte warten ..
Mitglied: hansbaer
12.06.2013 um 20:50 Uhr
wahnsinn!
Ihr seit ja echt Granaten! Danke!
Ich möchte mit dieser Aktion Pfade in einer Textdatei automatisch umbenennen.

was mir aber noch nicht ganz an dieser Lösung passt ist, dass die Variable "AlterText" verschiedene Werte haben kann.

als Beispiel

D:\InfoMedia\Layout\TFTupdateDSW
oder
D:\InfoMedia\Layout\TFTUpdateXXXcc
oder
D:\InfoMedia\Layout\TFTUpdateZZZvvv

Der Inhalt aus der o.g. Zelle (zeichenanzahl variabel) der CSV soll immer an die Stelle nach dem D:\InfoMedia\Layout\TFTUpdatexxx geschrieben werden (Zeichenanzahl xxx ebenso variabel)

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.
Bitte warten ..
Mitglied: bastla
12.06.2013, aktualisiert um 21:42 Uhr
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:
01.
Ein = "D:\Deine.csv" 
02.
Aus = "D:\Deine.txt" 
03.
Zeile = 2 
04.
Spalte = 2 
05.
Delim = ";" 
06.
Suche = "D:\InfoMedia\Layout\TFTupdate" 
07.
 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
10.
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1) 
11.
 
12.
DatAus = Split(fso.OpenTextFile(Aus).ReadAll, vbNewline) 
13.
 
14.
SLen = Len(Suche) 
15.
For i = 0 To UBound(DatAus) 
16.
    If Left(DatAus(i), SLen) = Suche Then DatAus(i) = Suche & Wert 
17.
Next 
18.
fso.CreateTextFile(Aus).Write Join(DatAus, vbNewline)
Grüße
bastla
Bitte warten ..
Mitglied: Endoro
12.06.2013 um 23:07 Uhr
01.
@echo off &setlocal 
02.
set "fcsv=file1" 
03.
set "ftxt=file2" 
04.
set "fnew=file3" 
05.
set "core=D:\InfoMedia\Layout\TFTupdate" 
06.
 
07.
for /f "skip=1tokens=2delims=;" %%i in (%fcsv%) do if not defined txtneu set "txtneu=%%i" 
08.
(for /f "delims=" %%i in (%ftxt%) do ( 
09.
	echo("%%i"|findstr /c:"%core%" >nul && (echo(%core%%txtneu%) || echo(%%i 
10.
))>%fnew% 
11.
type %fnew%
Gruss!
Bitte warten ..
Mitglied: hansbaer
13.06.2013 um 16:52 Uhr
Das wird ja immer besser!
Nur habe ich in meinem letzten beitrag leichtsinnigerweise die Dateiendung weggelassen- und ich möchte ja mit diesem script einen Dateinamen umbenennen.


als Beispiel

D:\InfoMedia\Layout\TFTupdateDSW.exe
oder
D:\InfoMedia\Layout\TFTUpdateXXXcc.exe
oder
D:\InfoMedia\Layout\TFTUpdateZZZvvv.exe

Der Inhalt aus der o.g. Zelle (zeichenanzahl variabel) der CSV soll immer an die Stelle nach dem D:\InfoMedia\Layout\TFTUpdatexxx geschrieben werden (Zeichenanzahl xxx ebenso variabel)

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.

Danke für die Hilfe! Ihr seid echt toll!
Bitte warten ..
Mitglied: Endoro
13.06.2013 um 18:42 Uhr
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.

Bei meiner Lösung wird die Variable core wieder gefunden, weil sie unverändert bleibt.

Gruss!
Bitte warten ..
Mitglied: bastla
13.06.2013 um 19:16 Uhr
Hallo hansbaer!
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:
01.
Ein = "D:\Deine.csv" 
02.
Aus = "D:\Deine.txt" 
03.
Zeile = 2 
04.
Spalte = 2 
05.
Delim = ";" 
06.
Suche = "D:\InfoMedia\Layout\TFTupdate" 
07.
Typ = ".exe" 
08.
 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
DatEin = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
11.
Wert = Split(DatEin(Zeile - 1), Delim)(Spalte - 1) 
12.
 
13.
DatAus = Split(fso.OpenTextFile(Aus).ReadAll, vbNewline) 
14.
 
15.
SLen = Len(Suche) 
16.
For i = 0 To UBound(DatAus) 
17.
    If Left(DatAus(i), SLen) = Suche Then DatAus(i) = Suche & Wert & Typ 
18.
Next 
19.
fso.CreateTextFile(Aus).Write Join(DatAus, vbNewline)
Grüße
bastla
Bitte warten ..
Mitglied: hansbaer
13.06.2013 um 21:34 Uhr
grandios!
funktioniert genau so wie ich es brauche!
Danke!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...