Bat date soll neu einTräge von einem txt doc in ein anderes Übertragen
Hallo, ich würde gerne mit eine Bat datei eine Date aktualiesen. Es osllte so ausehen
Nacheschauen ob neue einträge in C:\doc1.txt sind
wenn ja aktualieser die date unter D:\doc2.txt
und backup die davor mit dem dem datum unter D:\backup
Geht das so überhaupt bin noch etwas unerfaren damit und fand bis her nicht dazu.
bisherr habe ich das so Gelöst nun dabei trit das Problem auf das die date dann nicht mehr angesprochen wird vom Program.
@echo off
:start
del "D:\doc2.txt"
echo doc2.txt Geloecht
xcopy "C:\doc1.txt" D:\Server\Arma3Server\Arma3exilemod\profil\BattlEye
timeout 15
goto start
Hoffe es ist verständlich was ich will.
Mit Freundlichen Grüßen
Taker
Nacheschauen ob neue einträge in C:\doc1.txt sind
wenn ja aktualieser die date unter D:\doc2.txt
und backup die davor mit dem dem datum unter D:\backup
Geht das so überhaupt bin noch etwas unerfaren damit und fand bis her nicht dazu.
bisherr habe ich das so Gelöst nun dabei trit das Problem auf das die date dann nicht mehr angesprochen wird vom Program.
@echo off
:start
del "D:\doc2.txt"
echo doc2.txt Geloecht
xcopy "C:\doc1.txt" D:\Server\Arma3Server\Arma3exilemod\profil\BattlEye
timeout 15
goto start
Hoffe es ist verständlich was ich will.
Mit Freundlichen Grüßen
Taker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 292345
Url: https://administrator.de/forum/bat-date-soll-neu-eintraege-von-einem-txt-doc-in-ein-anderes-uebertragen-292345.html
Ausgedruckt am: 14.05.2025 um 16:05 Uhr
9 Kommentare
Neuester Kommentar
Hallo Taker,
was verstehst Du denn unter "Nacheschauen ob neue einträge in C:\doc1.txt sind"? Genügt es, das Datum der letzten Änderung zu überprüfen oder muss der Dateiinhalt untersucht werden? In letzterem Fall sollte das auf keinen Fall mit Batchscript erledigt werden, VBScript wäre vorzuziehen. Allerdings stellt sich dann die Frage, wie eine Änderung erkannt werden kann und wie die Datei strukturiert ist.
Und was verstehst Du unter "aktualieser die date unter D:\doc2.txt"? Die Datei
Du musst schon eine etwas genauere Aufgabenbeschreibung liefern, damit man Dir helfen kann.
Nebenbei: In Deinem obigen Codeschnipsel genügt es, den
Gruß
Friemler
was verstehst Du denn unter "Nacheschauen ob neue einträge in C:\doc1.txt sind"? Genügt es, das Datum der letzten Änderung zu überprüfen oder muss der Dateiinhalt untersucht werden? In letzterem Fall sollte das auf keinen Fall mit Batchscript erledigt werden, VBScript wäre vorzuziehen. Allerdings stellt sich dann die Frage, wie eine Änderung erkannt werden kann und wie die Datei strukturiert ist.
Und was verstehst Du unter "aktualieser die date unter D:\doc2.txt"? Die Datei
D:\doc2.txt
einfach ersetzen oder geänderte Daten aus C:\doc1.txt
extrahieren und nach D:\doc2.txt
übertragen?Du musst schon eine etwas genauere Aufgabenbeschreibung liefern, damit man Dir helfen kann.
Nebenbei: In Deinem obigen Codeschnipsel genügt es, den
COPY
-Befehl zu verwenden, Du möchtest ja nur eine Datei kopieren.Gruß
Friemler
Hallo Taker,
btr. Rechtschreibung: Alles klar, nix für ungut.
Zu Deinem Problem: Du schreibst oben, dass auf dem zweiten Game Server die aktualisierte Bann-Datei (wird zunächst gelöscht und dann neu auf den Server kopiert) nicht richtig ausgewertet wird. Hast Du denn bereits getestet, ob es etwas nutzt, die Datei mit einem Texteditor zu ändern und neu zu speichern? Denn das ist ja eigentlich genau das, was Du jetzt automatisiert per Batch/VBScript tun möchtest.
Wenn die Datei nach einer manuellen Änderung immer noch nicht richtig ausgewertet wird, liegt es wohl eher daran, dass der Logon-Service des Game Servers die Änderungen an der Datei nicht von selbst bemerkt. Dann musst Du herausfinden, wie Du es anstellst, dass die Bann-Datei nach einer Änderung bzw. nach einem Überschreiben neu eingelesen wird.
Also bevor wir hier anfangen Code zu entwickeln, bitte zuerst o.g. Test ausführen.
Gruß
Friemler
btr. Rechtschreibung: Alles klar, nix für ungut.
Zu Deinem Problem: Du schreibst oben, dass auf dem zweiten Game Server die aktualisierte Bann-Datei (wird zunächst gelöscht und dann neu auf den Server kopiert) nicht richtig ausgewertet wird. Hast Du denn bereits getestet, ob es etwas nutzt, die Datei mit einem Texteditor zu ändern und neu zu speichern? Denn das ist ja eigentlich genau das, was Du jetzt automatisiert per Batch/VBScript tun möchtest.
Wenn die Datei nach einer manuellen Änderung immer noch nicht richtig ausgewertet wird, liegt es wohl eher daran, dass der Logon-Service des Game Servers die Änderungen an der Datei nicht von selbst bemerkt. Dann musst Du herausfinden, wie Du es anstellst, dass die Bann-Datei nach einer Änderung bzw. nach einem Überschreiben neu eingelesen wird.
Also bevor wir hier anfangen Code zu entwickeln, bitte zuerst o.g. Test ausführen.
Gruß
Friemler
Hallo Taker,
OK, dann mal weiter gefragt:
Auf dem ersten Game Server muss ein Script laufen, dass neu hinzugekommene Einträge in der dortigen Bann-Datei findet. Das Editieren der Bann-Datei auf dem zweiten Game Server muss durch ein Script erfolgen, dass auf diesem gestartet wird. Handelt es sich in beiden Fällen um Windows-Maschinen?
Wenn nein:
Ich kann Dir nicht helfen, von Bash-Scripting habe ich keine Ahnung.
Wenn ja:
Ich würde das ganze dann so lösen, dass auf dem ersten Game Server ein Script gestartet werden muss, um neu hinzugekommene Einträge in der Bann-Datei zu finden. Dieses Script würde eine Ausgabedatei mit eben diesen Einträgen erzeugen. Diese Datei muss händisch auf den zweiten Game Server kopiert werden. Falls dort auch ein FTP Server läuft, lässt sich die Kopieraktion auch automatisieren. Auf dem zweiten Game Server muss ebenfalls ein Script gestartet werden, dass die Einträge aus dieser Datei an die Bann-Datei anhängt.
Dazu dann noch ein paar Fragen:
Gruß
Friemler
OK, dann mal weiter gefragt:
Auf dem ersten Game Server muss ein Script laufen, dass neu hinzugekommene Einträge in der dortigen Bann-Datei findet. Das Editieren der Bann-Datei auf dem zweiten Game Server muss durch ein Script erfolgen, dass auf diesem gestartet wird. Handelt es sich in beiden Fällen um Windows-Maschinen?
Wenn nein:
Ich kann Dir nicht helfen, von Bash-Scripting habe ich keine Ahnung.
Wenn ja:
Ich würde das ganze dann so lösen, dass auf dem ersten Game Server ein Script gestartet werden muss, um neu hinzugekommene Einträge in der Bann-Datei zu finden. Dieses Script würde eine Ausgabedatei mit eben diesen Einträgen erzeugen. Diese Datei muss händisch auf den zweiten Game Server kopiert werden. Falls dort auch ein FTP Server läuft, lässt sich die Kopieraktion auch automatisieren. Auf dem zweiten Game Server muss ebenfalls ein Script gestartet werden, dass die Einträge aus dieser Datei an die Bann-Datei anhängt.
Dazu dann noch ein paar Fragen:
- In welcher Codierung ist die Bann-Datei gespeichert (OEM 850, ANSI bzw. Windows-1252, UTF-8, UTF-16)?
- Ich benötige folgende Pfade auf dem ersten Game Server:
- Pfad der Bann-Datei
- Einen Pfad, wo man eine Kopie der zuletzt verarbeiteten Version der Bann-Datei zwischenspeichern kann. Mit Hilfe dieser Kopie kann man dann neu hinzugekommene Einträge finden.
- Den Pfad zu der Ausgabedatei, in die die neu hinzugekommenen Einträge geschrieben werden.
- Ich benötige folgende Pfade auf dem zweiten Game Server:
- Pfad der zu ändernden Bann-Datei
- Den Pfad zu der Datei, die die neu hinzuzufügenden Einträge enthält.
Gruß
Friemler
Hallo taker,
da ich morgen keine Zeit habe, hier schon mal ein erster Schnellschuss, der die von mir beschriebene Lösung umsetzt.
Script für Game Server 1:
Script für Game Server 2:
Eine Alternative zu Zeile 7:
Die Scripte sollten auf Windows-Maschinen unabhängig von der Codierung der Bann-Dateien funktionieren. Das solltest Du aber nochmal testen!! Kritisch wird es, wenn eine Datei Zeichen mit einem ASCII-Code größer als 127 enthält oder wenn es sich um Unicode-Dateien mit Byte Order Mark (BOM) am Dateianfang handelt.
Du musst im ersten Script die Variablen in den Zeilen 3 bis 5 und im zweiten Script die Variablen in den Zeilen 3 bis 4 anpassen.
Falls das automatisierte Kopieren der Ausgabedatei von Script1 per FTP auf den Game Server 2 möglich ist, kannst Du folgenden Schnipsel an Script1 anhängen:
Hier musst Du die Variablen in den Zeilen 1 bis 4 anpassen.
Gruß
Friemler
da ich morgen keine Zeit habe, hier schon mal ein erster Schnellschuss, der die von mir beschriebene Lösung umsetzt.
Script für Game Server 1:
@echo off & setlocal
set "InFile=.\Bann1.txt"
set "OldInFile=.\Bann1_Old.txt"
set "OutFile=.\NewEntries.txt"
if exist "%OldInFile%" (
findstr /iblxv /g:"%OldInFile%" "%InFile%" > "%OutFile%"
) else (
copy "%InFile%" "%OutFile%"
)
copy "%InFile%" "%OldInFile%"
Script für Game Server 2:
@echo off & setlocal
set "InFile=.\NewEntries.txt"
set "OutFile=.\Bann2.txt"
if exist "%InFile%" (
copy /b "%OutFile%"+"%InFile%" "%OutFile%"
)
Eine Alternative zu Zeile 7:
type "%InFile%" >> "%OutFile%"
Die Scripte sollten auf Windows-Maschinen unabhängig von der Codierung der Bann-Dateien funktionieren. Das solltest Du aber nochmal testen!! Kritisch wird es, wenn eine Datei Zeichen mit einem ASCII-Code größer als 127 enthält oder wenn es sich um Unicode-Dateien mit Byte Order Mark (BOM) am Dateianfang handelt.
Du musst im ersten Script die Variablen in den Zeilen 3 bis 5 und im zweiten Script die Variablen in den Zeilen 3 bis 4 anpassen.
Falls das automatisierte Kopieren der Ausgabedatei von Script1 per FTP auf den Game Server 2 möglich ist, kannst Du folgenden Schnipsel an Script1 anhängen:
set "FTPServer=FTPServerAdresse"
set "FTPUser=BenutzerName"
set "FTPPassword=Passwort"
set "FTPDir=FTP-Zielverzeichnis"
set "FTPScript=%Temp%\UploadScript.txt"
> "%FTPScript%" echo open %FTPServer%"
>>"%FTPScript%" echo user %FTPUser% %FTPPassword%
>>"%FTPScript%" echo binary
>>"%FTPScript%" echo cd "%FTPDir%"
>>"%FTPScript%" echo put "%OutFile%"
>>"%FTPScript%" echo bye
ftp -niv -s:"%FTPScript%"
del "%FTPScript%"
Hier musst Du die Variablen in den Zeilen 1 bis 4 anpassen.
Gruß
Friemler