taker9999
Goto Top

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

Content-Key: 292345

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: Friemler
Friemler Jan 06, 2016 at 18:39:36 (UTC)
Goto Top
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 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
Member: taker9999
taker9999 Jan 06, 2016 at 18:52:12 (UTC)
Goto Top
Ich Möchte für einen Game server die Ban liste von dem einen Server zum anderen Kopieren lassen das Problem was ich dann habe ist das die Date wenn ich sie löchen lasse und neu Kopierne lasse nicht erkannt wird und daruch gebande player drauf kommen. Der inhalt der .txt datei sieht so aus

asduhlwd823asfd85yd7f6e -1 blabla.de Ban #800 220 Points (Montag, 4. Januar 2016 16:31:32)

ein script soll die datei auslesen und wenn ein neuer Ban drin ist dann in den anderen server mit übertragen. Leider beitet das tool was die bans rein schreib nicht die Möglichkeit es in 2 Server zu schreiben und 2 tools kann ich auch nicht laufen lassen da es dann nicht die Bans reinschreib warum auch immer. der ihnhaber von dem tool sagte das es ein schutz sei.
Member: Friemler
Friemler Jan 06, 2016 updated at 20:15:31 (UTC)
Goto Top
Jetzt wissen wir zwar etwas mehr über Dein Vorhaben, meine Fragen hast Du jedoch nicht beantwortet. Ich finde es auch wünschenswert, dass Du Dir etwas mehr Mühe mit der Rechtschreibung gibst, Deine Texte lassen sich z.Z. nur mühevoll lesen.

Gruß
Friemler
Member: taker9999
taker9999 Jan 09, 2016 at 16:46:13 (UTC)
Goto Top
auf grund einer Krankheit habe ich Probleme mit Rechtschreibung ich gebe mir da mühe. Ich habe mir in den Letzen tagen mal VBscripte an gekuckt fand mich da aber nicht rein. Ich will das die Neuen Einträge aus doc1.txt in doc2.txt Geschreiben werden. Ich dachte das es mit bacht einfach geht aber gut. Wie müste ich das machen ist mir gerade egal wie aber es muss so sein das ich nacher das script per Batch killen und dann wider starten kann.
Member: Friemler
Friemler Jan 09, 2016 at 17:27:30 (UTC)
Goto Top
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
Member: taker9999
taker9999 Jan 10, 2016 at 11:21:17 (UTC)
Goto Top
Sobald ich mich dort eintrage bin ich gebannd. Wenn ich die txt datei Kopiere geht das nicht. es sit shcon etwas Komsich ist aber so
Member: Friemler
Friemler Jan 10, 2016 updated at 17:37:42 (UTC)
Goto Top
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:

  1. In welcher Codierung ist die Bann-Datei gespeichert (OEM 850, ANSI bzw. Windows-1252, UTF-8, UTF-16)?
  2. 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.
  3. 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
Member: Friemler
Friemler Jan 10, 2016 updated at 22:03:41 (UTC)
Goto Top
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:
@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
Member: taker9999
taker9999 Jan 10, 2016 at 21:36:52 (UTC)
Goto Top
Beide Server laufen auf einem Dedi Server mit Windwos 2012 R2 Standart von daher ist alles Local zu handel. Ich habe Gemerkt meite ich mir eine oder gleich 2 Server bin ich besser dran gleich einen Root mit mehr leistung zu hollen und kann dann noch einen TS3 Server mit laufen lassen. Man hat dann sowiso mehr freiheiten.

Das script Probiere ich morgen mal aus.

Vielen dank dafür