skywalker28
Goto Top

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.

Content-Key: 284344

Url: https://administrator.de/contentid/284344

Printed on: April 18, 2024 at 20:04 o'clock

Member: holli.zimmi
holli.zimmi Oct 01, 2015 at 11:38:56 (UTC)
Goto Top
Hi,

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

Gruß

Holli
Member: skywalker28
skywalker28 Oct 01, 2015 at 12:11:06 (UTC)
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.
Mitglied: 114757
114757 Oct 01, 2015 updated at 12:47:04 (UTC)
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
Member: skywalker28
skywalker28 Oct 01, 2015 at 13:15:28 (UTC)
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. ??

Mitglied: 114757
114757 Oct 01, 2015, updated at Oct 02, 2015 at 05:31:52 (UTC)
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.
Member: skywalker28
skywalker28 Oct 02, 2015 at 06:25:10 (UTC)
Goto Top
ok jodel,
ist dann wohl doch nicht so einfach zu lösen.
Trotzdem danke vielmals.