Top-Themen

Aktuelle Themen (A bis Z)

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

Batchverarbeitung suchen und ersetzen ohne Zusatztools

Frage Entwicklung Batch & Shell

Mitglied: cqash

cqash (Level 1) - Jetzt verbinden

22.04.2010, aktualisiert 18.10.2012, 3733 Aufrufe, 9 Kommentare

Hallo zusammen,

ich habe folgenden Problem: Ich verarbeite eine CSV-Datei und muss die letzte Zeile in der Datei um einen String erweitern, also quasi suchen und ersetzen. Das Batchskript fügt dann die Ausführungszeit an die Zeile an.

Beispiel:
Letze Zeile in der CSV-Datei (vorher): 2010-04-20;07:15:23;
Letze Zeile in der CSV-Datei (nachher): 2010-04-20;07:15:23;16:53:24;

Ich hoffe jemand kann mir bei dem Thema helfen, ich bin dankbar für jede Idee.

Gruß cqash
Mitglied: cqash
22.04.2010 um 20:28 Uhr
Ja, habe diverse Einträge von "bastla" durchgelesen und versucht das in meinem Skript umzusetzen, leider bisher ohne Erfolg.
Bitte warten ..
Mitglied: bastla
22.04.2010 um 20:42 Uhr
Hallo cqash!

Wäre natürlich ganz einfach, wenn die letzte Zeile nicht mit einer Zeiilenschaltung endet:
>>D:\Datei.csv 16:53:24;
Problem: Danach gibt's die Zeilenschaltung ...
Soferne VBScript nicht unter "nogo" fällt:
01.
@echo off & setlocal 
02.
set "Datei=D:\Datei.csv" 
03.
set "Zusatz=16:53:24;" 
04.
 
05.
set A=%temp%\AppendIt.vbs 
06.
>%A% echo Set fso=CreateObject("Scripting.FileSystemObject"):D=WScript.Arguments(0):T=fso.OpenTextFile(D).ReadAll:fso.CreateTextFile(D).Write T ^& WScript.Arguments(1) 
07.
 
08.
cscript //nologo %A% "%Datei%" "%Zusatz%"
Grüße
bastla
Bitte warten ..
Mitglied: cqash
22.04.2010 um 20:54 Uhr
Hi bastla,

das ist leider auch eins der Probleme, VB, bzw VBS dürfen wir nicht auf dem Server verwenden (Unternehmensrichtlinien), nur BATCH oder perl, wobei ich perl eigentlich vermeiden will. Hast Du vielleicht noch eine weitere Idee. Dir scheint das ja alles so aus den Fingern zu fließen. Schon mal vielen Dank für weitere Ideen/Lösungen.

Gruß cqash
Bitte warten ..
Mitglied: bastla
22.04.2010 um 20:58 Uhr
Hallo cqash!

Na gut - dann vielleicht so:
01.
@echo off & setlocal 
02.
set "Datei=D:\Datei.csv" 
03.
set "Zusatz=16:53:24;" 
04.
 
05.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Letzte=%%i" 
06.
move "%Datei%" "%temp%\Datei.txt" 
07.
findstr /v /b "%Letzte%" "%temp%\Datei.txt">"%Datei%" 
08.
<nul >>"%Datei%" set /p=%Letzte%%Zusatz% 
09.
del "%temp%\Datei.txt"
Voraussetzung: Die letzte Zeile kommt mit dem selben Inhalt nicht nochmals in der Datei vor ...

[Edit] Zeile 9 zum Aufräumen hinzugefügt [/Edit]
[Edit2] Jetzt so, wie's vorher schon gemeint war ... [/Edit2]

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
22.04.2010 um 21:08 Uhr
Zitat von bastla:
Wäre natürlich ganz einfach, wenn die letzte Zeile nicht mit einer Zeiilenschaltung endet:
>>D:\Datei.csv 16:53:24; 
> 
Problem: Danach gibt's die Zeilenschaltung ...

Das ließe sich ja verhindern:
<NUL >>D:\Datei.csvt set /P Dummy=15:53:24;
Gruß
LotPings
Bitte warten ..
Mitglied: bastla
22.04.2010 um 21:16 Uhr
@LotPings
Bin ja inzwischen auch schon dort - und auch ohne die Voraussetzung, dass die letzte Zeile keine Zeilenschaltung beinhalten darf ...

Grüße
bastla
Bitte warten ..
Mitglied: cqash
23.04.2010 um 08:03 Uhr
Danke für die vielen Antworten, leider funktioniert es noch nicht ganz richtig. Vielleicht hilft es doch, wenn ich Euch mal den gesamten Code zur Verfügung stelle.

01.
@echo off 
02.
SETLOCAL ENABLEEXTENSIONS 
03.
SETLOCAL DISABLEDELAYEDEXPANSION 
04.
Set log_folder=C:\ 
05.
Set log_file=test.csv 
06.
Set mm=%DATE:~3,2% 
07.
Set dd=%DATE:~0,2% 
08.
Set yyyy=%DATE:~6,4% 
09.
Set stunde=%time:~0,2% 
10.
If "%stunde:~0,1%"==" " set stunde=0%stunde:~1,1% 
11.
Set minute=%time:~3,2% 
12.
Set sekunde=%time:~6,2% 
13.
 
14.
if %stunde% LSS 12 (goto start) else (goto end) 
15.
 
16.
:start 
17.
ECHO %dd%.%mm%.%yyyy%;%stunde%:%minute%:%sekunde%;>> %log_folder%%log_file% 
18.
goto finish 
19.
 
20.
:end 
21.
for /f "usebackq delims=" %%i in ("%log_folder%%log_file%") do set "Letzte=%%i"  
22.
move "%log_folder%%log_file%" "%temp%\Datei.csv"  
23.
findstr /v /b "%Letzte%" "%temp%\Datei.csv">"%Datei%"  
24.
<nul >>"%log_folder%%log_file%" set /p=%Letzte%%stunde%:%minute%:%sekunde%; 
25.
del "%temp%\Datei.csv" 
26.
goto finish 
27.
 
28.
:finish 
29.
exit
Bitte warten ..
Mitglied: bastla
23.04.2010 um 09:06 Uhr
Hallo cqash!
leider funktioniert es noch nicht ganz richtig
ist eine mäßig aussagekräftige Fehlerbeschreibung - da hilft der gepostete Code schon mehr ...

Ersetze die Zeilen 20 bis 26 durch:
01.
:end 
02.
for /f "usebackq delims=" %%i in ("%log_folder%%log_file%") do set "Letzte=%%i"  
03.
move "%log_folder%%log_file%" "%temp%\Datei.csv"  >nul 
04.
findstr /v /b "%Letzte%" "%temp%\Datei.csv">"%log_folder%%log_file%"  
05.
>>"%log_folder%%log_file%" echo %Letzte%%stunde%:%minute%:%sekunde%; 
06.
del "%temp%\Datei.csv" 
07.
goto finish
Grüße
bastla

P.S.: Vielleicht solltest Du überhaupt erst am Nachmittag testen ...
Bitte warten ..
Ähnliche Inhalte
Linux Tools
Bash: suchen und ersetzen
Frage von SIPSIPLinux Tools14 Kommentare

Hallo zusammen Möchte aus einer riesigen HTML Datei folgenden Strings ersetzen: ^M\ Nun habe ich dieses kleine Script erstellt, ...

Windows Tools
Suche Programm zum dateien suchen und Ersetzen mit Wildcat Suche
gelöst Frage von sfera-haizaWindows Tools5 Kommentare

Grüßt euch, ich nutze zzT. das Programm InfoRapid Suchen & Ersetzen um HTML / PHP Dateien zu durchsuchen bzw. ...

Batch & Shell
CMD: Suchen, Ersetzen und Hochzählen
gelöst Frage von ralfkauskBatch & Shell3 Kommentare

Hallo zusammen Ich habe folgendes Problem In einer Datei muss ein Wert gefunden, auf Korrektheit geprüft und evtl. ersetzt/geändert ...

Batch & Shell
Regwert suchen und ersetzen?
Frage von busteronBatch & Shell7 Kommentare

Hallo alle zusammen, ich hab mal wieder ne Frage! Wie kann ich die komplette Registry über eine Batch nach ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 1 StundePerl1 Kommentar

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 2 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 108 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless11 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...