Wenn jemand wirklich ganz furchtbar langweilig ist...Batch-Datei erklären?
Für mich teilweise völlig unverständlich...
Hallo miteinander,
ehrlich - ich hab versucht, das zu durchschauen, aber ich werde bei aller Liebe nicht schlau daraus. Klar vielleicht, als absolut Beginner...
Ich weiss natürlich, dass Ihr alle weit besseres zu tun habt - da sie funktioniert, besteht auch kein wirklicher Bedarf für dieses Post, ausser meinem Ehrgeiz, es zu verstehen, nachdem ich Batch-Luft geschnuppert hab. Ich hab sogar Bibers Date-Time-Tutorial mal durchforstet, nach einer teilweisen Antwort...
Ich habe hier eine Batch, die von einem Unbekannten geschrieben wurde. Sie sichert das Log wohl am Anfang und nach Beendigung des Spieles (wird bei jedem Start neu geschrieben)
cd logs
copy nwlog.txt+nwclientlog1.txt nwlog_temp.txt
del nwlog.txt
ren nwlog_temp.txt nwlog.txt
cd ..
spiel.exe +connect server:ip
cd logs
if "%time:~0,1%" == "1" goto time2
if "%time:~0,1%" == "2" goto time2
rename nwclientLog1.txt log_%date:~6,4%-%date:~3,2%-%date:~0,2%_0%time:~1,1%-%time:~3,2%-%time:~6,2%.log
goto done
:time2
rename nwclientLog1.txt log_%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.log
:done
copy nwclientlog1.sav nwclientlog1.txt
copy nwlog.sav nwlog.txt
cd ..
Das, was mir Kopfzerbrechen macht:
1. Die eigentliche Log-Datei ist nwclientlog1.txt. Er setzt aber eine zusätzliche nwlog.txt noch voraus, selbst erstellt - warum?
2. Warum zweimal der Verweis auf time2? Beide Zeilen führen uns zum gleichen rename, ohne dass 1 und 2 näher definiert wäre?
3. Ebenso zweimal rename, der fast gleiche Befehl, bis auf die 0 bei %_0%time....
Die Datei heisst aber, soweit ich das sehen kann, immer gleich, und wird auch immer erstellt, egal, wie wenig oder viel Inhalt sie tatsächlich enthält...
4. Es gibt überhaupt kein nwlog.sav und ebensowenig nwclientlog.sav - müsste man erstellen, doch wozu? Die werden, soweit ich das sehe, gar nicht erst angetastet?
Ich kann den Verfasser leider nicht mehr fragen. Darum meine Frage an Euch, wenn jemand Lust hat, das zu erklären. Falls nicht, natürlich auch überhaupt kein Problem
Lieben Gruss und eine schöne Arbeitswoche,
Cat
PS: Und nein, ich bin nicht _die_ CrazyCat, die hier offenbar einmal angemeldet war und wesentlich mehr von Batch versteht als ich
Hallo miteinander,
ehrlich - ich hab versucht, das zu durchschauen, aber ich werde bei aller Liebe nicht schlau daraus. Klar vielleicht, als absolut Beginner...
Ich weiss natürlich, dass Ihr alle weit besseres zu tun habt - da sie funktioniert, besteht auch kein wirklicher Bedarf für dieses Post, ausser meinem Ehrgeiz, es zu verstehen, nachdem ich Batch-Luft geschnuppert hab. Ich hab sogar Bibers Date-Time-Tutorial mal durchforstet, nach einer teilweisen Antwort...
Ich habe hier eine Batch, die von einem Unbekannten geschrieben wurde. Sie sichert das Log wohl am Anfang und nach Beendigung des Spieles (wird bei jedem Start neu geschrieben)
cd logs
copy nwlog.txt+nwclientlog1.txt nwlog_temp.txt
del nwlog.txt
ren nwlog_temp.txt nwlog.txt
cd ..
spiel.exe +connect server:ip
cd logs
if "%time:~0,1%" == "1" goto time2
if "%time:~0,1%" == "2" goto time2
rename nwclientLog1.txt log_%date:~6,4%-%date:~3,2%-%date:~0,2%_0%time:~1,1%-%time:~3,2%-%time:~6,2%.log
goto done
:time2
rename nwclientLog1.txt log_%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.log
:done
copy nwclientlog1.sav nwclientlog1.txt
copy nwlog.sav nwlog.txt
cd ..
Das, was mir Kopfzerbrechen macht:
1. Die eigentliche Log-Datei ist nwclientlog1.txt. Er setzt aber eine zusätzliche nwlog.txt noch voraus, selbst erstellt - warum?
2. Warum zweimal der Verweis auf time2? Beide Zeilen führen uns zum gleichen rename, ohne dass 1 und 2 näher definiert wäre?
3. Ebenso zweimal rename, der fast gleiche Befehl, bis auf die 0 bei %_0%time....
Die Datei heisst aber, soweit ich das sehen kann, immer gleich, und wird auch immer erstellt, egal, wie wenig oder viel Inhalt sie tatsächlich enthält...
4. Es gibt überhaupt kein nwlog.sav und ebensowenig nwclientlog.sav - müsste man erstellen, doch wozu? Die werden, soweit ich das sehe, gar nicht erst angetastet?
Ich kann den Verfasser leider nicht mehr fragen. Darum meine Frage an Euch, wenn jemand Lust hat, das zu erklären. Falls nicht, natürlich auch überhaupt kein Problem
Lieben Gruss und eine schöne Arbeitswoche,
Cat
PS: Und nein, ich bin nicht _die_ CrazyCat, die hier offenbar einmal angemeldet war und wesentlich mehr von Batch versteht als ich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51507
Url: https://administrator.de/contentid/51507
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
cd logs --------------- wechsel ins verzeichnis logs
copy nwlog.txt+nwclientlog1.txt
nwlog_temp.txt --------- kopiert den inhalt von nwlog und nwclientlog in nwlog_temp
del nwlog.txt ---------löscht nwlog UM
ren nwlog_temp.txt nwlog.txt ------- nwlog_temp den namen nwlog zu geben
cd ..--------- verlässt das verzeichnis logs wieder
spiel.exe +connect server:ip ----- startet das spiel mit dem übergabeparameter (IP-adresse vom server)
cd logs ---- wechselt wieder in verzeichnis logs
if "%time:~0,1%" == "1" --------------- ändert einige zeitangaben.... (kp was genau) warscheinlich logeinträge erstellung!
goto time2
if "%time:~0,1%" == "2"
goto time2
rename nwclientLog1.txt
log_%date:~6,4%-%date:~3,2%-%date:~0,2%_0%time:~1,1%-%time:~3,2%-%time:~6,2%.log
goto done
:time2
rename nwclientLog1.txt
log_%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.log
:done
copy nwclientlog1.sav nwclientlog1.txt----------- sichert anscheinend die savegames im log
copy nwlog.sav nwlog.txt
cd .. --- verlässt wieder das verzeichnis
copy nwlog.txt+nwclientlog1.txt
nwlog_temp.txt --------- kopiert den inhalt von nwlog und nwclientlog in nwlog_temp
del nwlog.txt ---------löscht nwlog UM
ren nwlog_temp.txt nwlog.txt ------- nwlog_temp den namen nwlog zu geben
cd ..--------- verlässt das verzeichnis logs wieder
spiel.exe +connect server:ip ----- startet das spiel mit dem übergabeparameter (IP-adresse vom server)
cd logs ---- wechselt wieder in verzeichnis logs
if "%time:~0,1%" == "1" --------------- ändert einige zeitangaben.... (kp was genau) warscheinlich logeinträge erstellung!
goto time2
if "%time:~0,1%" == "2"
goto time2
rename nwclientLog1.txt
log_%date:~6,4%-%date:~3,2%-%date:~0,2%_0%time:~1,1%-%time:~3,2%-%time:~6,2%.log
goto done
:time2
rename nwclientLog1.txt
log_%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.log
:done
copy nwclientlog1.sav nwclientlog1.txt----------- sichert anscheinend die savegames im log
copy nwlog.sav nwlog.txt
cd .. --- verlässt wieder das verzeichnis
so bei ein paar stellen kann ich dir helfen!!
mfg
drobskind
Hallo CrazyCat!
zu 1)
Ziel der "copy/del/ren"-Aktion ist es, ein fortlaufendes Log in "nwlog.txt" zu erzeugen, indem an eine bereits vorhandene "nwlog.txt" die "nwclientlog1.txt" angefügt wird - ließe sich einfacher realisieren mit
zu 2 und 3)
Hier ist das Ziel die Formatierung der Uhrzeit im Dateinamen der umzubenennenden Log-Datei, da %time% keine führende 0 ausgibt - anhand der ersten Stelle der Uhrzeit soll entschieden werden, ob eine "0" im Dateinamen vorangestellt werden soll (die hast Du bei den "ren"-Zeilen ja schon bemerkt). Dazu wird mit den beiden "if" abgefragt, ob die Uhrzeit mit "1" oder "2" beginnt und in diesem Fall keine "0" vorangestellt (was dann aber bei Zeiten zwischen 1:00:00 und 2:59:59 auch nicht passieren würde). Um die Vorgangsweise hier richtig zu stellen, müsstest Du etwas in der Art machen:
Danach könntest Du die einzelnen Variablen %St%, %Min% und %Sek% verwenden.
zu 4)
Nach dem "Ablegen" der aktuellen "nwclientlog1.txt" soll offensichtlich eine (von Hand) gespeicherte Version davon ("nwclientlog1.sav") zur aktuellen Version gemacht werden.
Die letzte Zeile schließlich führt die Aktionen am Anfang ad absurdum, da die dort erstellte Log-Sammeldatei "nwlog.txt" ebenfalls mit einer gespeicherten Version ("nwlog.sav") überschrieben würde.
Ob Du diese beiden Zeilen überhaupt brauchst, kann ich nicht beurteilen - solange Du aber die jeweiligen ".sav"-Dateien nicht zur Verfügung hast, erntest Du damit nur Fehlermeldungen der Art "Das System kann die angegebene Datei nicht finden.".
Grüße
bastla
[Edit] @drobskind - Sorry, hatte Dich nicht bemerkt ... [/Edit]
zu 1)
Ziel der "copy/del/ren"-Aktion ist es, ein fortlaufendes Log in "nwlog.txt" zu erzeugen, indem an eine bereits vorhandene "nwlog.txt" die "nwclientlog1.txt" angefügt wird - ließe sich einfacher realisieren mit
"type nwclientlog1.txt>>nwlog.txt"
Hier ist das Ziel die Formatierung der Uhrzeit im Dateinamen der umzubenennenden Log-Datei, da %time% keine führende 0 ausgibt - anhand der ersten Stelle der Uhrzeit soll entschieden werden, ob eine "0" im Dateinamen vorangestellt werden soll (die hast Du bei den "ren"-Zeilen ja schon bemerkt). Dazu wird mit den beiden "if" abgefragt, ob die Uhrzeit mit "1" oder "2" beginnt und in diesem Fall keine "0" vorangestellt (was dann aber bei Zeiten zwischen 1:00:00 und 2:59:59 auch nicht passieren würde). Um die Vorgangsweise hier richtig zu stellen, müsstest Du etwas in der Art machen:
for /f "tokens=1-3 delims=:" %%i in ('echo %time%') do (set St=%%i) & (set Min=%%j) & (set Sek=%%k)
if %St% lss 10 set "St=0%St%"
set Sek=%Sek:~0,2%
zu 4)
Nach dem "Ablegen" der aktuellen "nwclientlog1.txt" soll offensichtlich eine (von Hand) gespeicherte Version davon ("nwclientlog1.sav") zur aktuellen Version gemacht werden.
Die letzte Zeile schließlich führt die Aktionen am Anfang ad absurdum, da die dort erstellte Log-Sammeldatei "nwlog.txt" ebenfalls mit einer gespeicherten Version ("nwlog.sav") überschrieben würde.
Ob Du diese beiden Zeilen überhaupt brauchst, kann ich nicht beurteilen - solange Du aber die jeweiligen ".sav"-Dateien nicht zur Verfügung hast, erntest Du damit nur Fehlermeldungen der Art "Das System kann die angegebene Datei nicht finden.".
Grüße
bastla
[Edit] @drobskind - Sorry, hatte Dich nicht bemerkt ... [/Edit]
Moin CraziestCat,
...und noch eine weitere Anmerkung/Erläuterung:
Unnötige Fehlerquelle in dem Schnipsel oben ist die Mimik mit "cd logs" am Anfang und "cd.." am Ende.
Das funktioniert ja erstens nur, wenn man/frau den Batch auf dem richtigen Laufwerk und zweitens sogar im richtigen Unterverzeichnis (eine Ebene über "..\logs") aufruft.
Besser:
- am Anfang des Batches altes Verzeichnis sichern und in neues Laufwerk/Verzeichnis wechseln mit "PushD d:\subdir\whatever\logs" und
- am Ende des Batches den alten Zustand (Laufwerk/Verzeichnis) wieder herstellen mit "PopD".
Gruss
Biber
...und noch eine weitere Anmerkung/Erläuterung:
Unnötige Fehlerquelle in dem Schnipsel oben ist die Mimik mit "cd logs" am Anfang und "cd.." am Ende.
Das funktioniert ja erstens nur, wenn man/frau den Batch auf dem richtigen Laufwerk und zweitens sogar im richtigen Unterverzeichnis (eine Ebene über "..\logs") aufruft.
Besser:
- am Anfang des Batches altes Verzeichnis sichern und in neues Laufwerk/Verzeichnis wechseln mit "PushD d:\subdir\whatever\logs" und
- am Ende des Batches den alten Zustand (Laufwerk/Verzeichnis) wieder herstellen mit "PopD".
Gruss
Biber
Moin KratziKatzi,
nein, Du bist nicht zu dumm, Sternchen zu verteilen - diese Funktion ist gerade bei unser allem WebMaster scholl "in Überarbeitung".
[Für Nicht-ITler: deutsche Übersetzung dieses Fach-Terminus ist "in Vergessenheit geraten", "den Weg alles Irdischen gegangen", " aus Kosten-Nutzen-Erwägungen neu priorisiert worden"].
Mit anderen Worten - diese Funktion ist Vergangenheit und die meisten vermissen sie auch nicht soooo sehr.
Aber stellvertretend für die anderen Poster bedanke ich mich für den guten Willen und freue mich über die virtuellen Sterntaler.
Wenn Du magst (Platz genug ist hier), dann setz doch Deinen final batch noch in Deinen letzten Kommentar rein.
Editieren kannst Du auch, wenn der Beitrag geschlossen ist.
Was ich jetzt nämlich gleich tun werde.
Schönes Wochenende und bis zum nächsten Batch
Biber
nein, Du bist nicht zu dumm, Sternchen zu verteilen - diese Funktion ist gerade bei unser allem WebMaster scholl "in Überarbeitung".
[Für Nicht-ITler: deutsche Übersetzung dieses Fach-Terminus ist "in Vergessenheit geraten", "den Weg alles Irdischen gegangen", " aus Kosten-Nutzen-Erwägungen neu priorisiert worden"].
Mit anderen Worten - diese Funktion ist Vergangenheit und die meisten vermissen sie auch nicht soooo sehr.
Aber stellvertretend für die anderen Poster bedanke ich mich für den guten Willen und freue mich über die virtuellen Sterntaler.
Wenn Du magst (Platz genug ist hier), dann setz doch Deinen final batch noch in Deinen letzten Kommentar rein.
Editieren kannst Du auch, wenn der Beitrag geschlossen ist.
Was ich jetzt nämlich gleich tun werde.
Schönes Wochenende und bis zum nächsten Batch
Biber