skywalker28

Batch mit Ausnahme bei FINDSTR

Hallo zusammen, ich bin beim Erstellen meiner Batch-Datei als Anfänger mit Hilfe dieses Forums schon recht nah am Ziel, irgendetwas schein daran aber noch nicht zu stimmen.
Ich möchte aus zwei verschiedenen Textdateien (mit der Endung .log) die im gleichen Ordner liegen den jeweiligen Text herauskopieren, in einem anderen Ordner eine neue Textdatei (mit Endung .log) erstellen und die beiden Inhalte dort hinein kopieren.
Anschließend werden die ursprünglichen zwei einzelnen Dateien gelöscht.
Das Ganze darf aber nur ausgeführt werden, wenn bei beiden Dateien in der letzten Zeile das Wort ENDE steht. Dieses steht immer alleine in der Zeile, es ist da also kein ganzer Satz vorhanden.
Der Text sieht so aus:
00001-001-001-01-00-X-U001
30.9.2015
15:00:00
START
30.9.2015
16:00:00
ENDE

Er kann aber auch so aussehen, dann darf die Aktion allerdings nicht stattfinden da das ENDE fehlt:
00001-001-001-01-00-X-U001
30.9.2015
15:00:00
START


Hier soweit mein Versuch:
@echo off
FINDSTR /E "ENDE" P:\Zeiterfassung\rxp_500ds.log
IF errorlevel 1 goto lukas
FINDSTR /E "ENDE" P:\Zeiterfassung\rxp_500dsc.log
IF errorlevel 1 goto lukas
IF NOT EXIST P:\Zeiterfassung\RXP500DS\rxp_500ds.log false 1>P:\Zeiterfassung\RXP500DS\rxp_500ds.log
FOR /f %%f IN (P:\Zeiterfassung\rxp_500ds.log) DO echo %%f >> P:\Zeiterfassung\RXP500DS\rxp_500ds.log
FOR /f %%f IN (P:\Zeiterfassung\rxp_500dsc.log) DO echo %%f >> P:\Zeiterfassung\RXP500DS\rxp_500ds.log
IF EXIST P:\Zeiterfassung\rxp_500ds.log del P:\Zeiterfassung\rxp_500ds.log
IF EXIST P:\Zeiterfassung\rxp_500dsc.log del P:\Zeiterfassung\rxp_500dsc.log
:lukas


Momentan wird noch keine neue (einzelne) Datei erstellt.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 284344

Url: https://administrator.de/forum/batch-mit-ausnahme-bei-findstr-284344.html

Ausgedruckt am: 14.05.2025 um 15:05 Uhr

holli.zimmi
holli.zimmi 01.10.2015 um 13:38:56 Uhr
Goto Top
Hi,

warum heist das ":lukas" und nicht ":Finish"?
Was willst Du machen bei ":Lukas"?

Gruß

Holli
skywalker28
skywalker28 01.10.2015 um 14:11:06 Uhr
Goto Top
Servus,
war mir nicht klar ob bzw. dass das eine Rolle spielt.
Hab es geändert, genützt hat es nicht. Trotz ENDE in beiden Textdateien am Schluss führt er nicht aus.
114757
114757 01.10.2015 aktualisiert um 14:47:04 Uhr
Goto Top
Moin,
@echo off
set "file1=P:\Zeiterfassung\rxp_500ds.log"  
set "file2=P:\Zeiterfassung\rxp_500dsc.log"  
set "target=P:\Zeiterfassung\RXP500DS\rxp_500ds.log"  

findstr "ENDE" "%file1%" && findstr "ENDE" "%file2%" && (  
	IF NOT EXIST "%target%" echo false 1>"%target%"  
	copy "%file1%" + "%file2%" "%target%"  
	del "%file1%" 2>nul  
	del "%file2%" 2>nul  
)
Gruß jodel32
skywalker28
skywalker28 01.10.2015 um 15:15:28 Uhr
Goto Top
Danke jodel. das sieht besser aus.
Allerdings noch zwei Sachen:

1.
Der Text soll nur kopiert werden, wenn in der letzten Zeile das Wort ENDE steht - müsste es dann nicht so aussehen? geht aber nicht...:
findstr /E "ENDE" "%file1%" && findstr /E "ENDE" "%file2%" && (

2.
Ganz am Schluss setzt er mir jetzt einen Pfeil als Sonderzeichen dazu. ??

114757
114757 01.10.2015, aktualisiert am 02.10.2015 um 07:31:52 Uhr
Goto Top
Zitat von @skywalker28:
Der Text soll nur kopiert werden, wenn in der letzten Zeile das Wort ENDE steht - müsste es dann nicht so aussehen? geht aber nicht...:
Nein, /E bedeutet am Ende einer Zeile, nicht am Ende einer Datei ... Wenn nun ein Leerzeichen hinter dem Wort ENDE steht, passt das mit /E nicht mehr.

2.
Ganz am Schluss setzt er mir jetzt einen Pfeil als Sonderzeichen dazu. ??
Passwörter in der Konsole auszugeben , keine gute Idee !
Dein File ist bestimmt im Unicode-Format das klappt dann sowieso nur bedingt in einer CMD. Da muss man dann die Codepage umschalten.
skywalker28
skywalker28 02.10.2015 um 08:25:10 Uhr
Goto Top
ok jodel,
ist dann wohl doch nicht so einfach zu lösen.
Trotzdem danke vielmals.