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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284344
Url: https://administrator.de/forum/batch-mit-ausnahme-bei-findstr-284344.html
Ausgedruckt am: 14.05.2025 um 15:05 Uhr
6 Kommentare
Neuester Kommentar

Moin,
Gruß jodel32
@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
)

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.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...:
2.
Ganz am Schluss setzt er mir jetzt einen Pfeil als Sonderzeichen dazu. ??
Dein File ist bestimmt im Unicode-Format das klappt dann sowieso nur bedingt in einer CMD. Da muss man dann die Codepage umschalten.