Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wenn jemand wirklich ganz furchtbar langweilig ist...Batch-Datei erklären?

Frage Entwicklung Batch & Shell

Mitglied: CrazyCat

CrazyCat (Level 1) - Jetzt verbinden

13.02.2007, aktualisiert 22.02.2007, 5468 Aufrufe, 6 Kommentare

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
Mitglied: drobskind
13.02.2007 um 07:53 Uhr
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


so bei ein paar stellen kann ich dir helfen!!

Mit freundlichen Grüßen
drobskind
Bitte warten ..
Mitglied: bastla
13.02.2007 um 08:07 Uhr
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
01.
"type nwclientlog1.txt>>nwlog.txt"
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:
01.
for /f "tokens=1-3 delims=:" %%i in ('echo %time%') do (set St=%%i) & (set Min=%%j) & (set Sek=%%k) 
02.
if %St% lss 10 set "St=0%St%" 
03.
set Sek=%Sek:~0,2%
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]
Bitte warten ..
Mitglied: Biber
13.02.2007 um 09:46 Uhr
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
Bitte warten ..
Mitglied: CrazyCat
13.02.2007 um 11:26 Uhr
Guten Morgen Ihr Drei,


@drobskind: Das war wirklich Schritt für Schritt-Erklärung, klasse, danke für die Mühe

@ bastla: Mein erster Schritt nach Deiner Erklärung ist wohl, die .savs-Zeilen rauszunehmen und das auch mit dem type-Befehl zu probieren

For-Befehle... die ganzen Sonderzeichen machen mir Angst ;). Da werde ich mich wohl wirklich nochmal genauer einlesen müssen.

Danke auch Dir, dass Du auch Licht in die Time- und rename-Zeilen gebracht hast!

@Biber: Ja, das ist richtig - die bat liegt im richtigen Verzeichnis. Hm... pushd und popd wäre natürlich weitaus proffessioneller, als "cd logs" und "cd..". Oder eine Variable a la "Sicher=C:\logs" und dann beim Rename herumzumurksen. Spart Zeilen - anhand Deiner Beiträge - bist Du evtl. ein Sparfuchs, kein Biber? *scherz*

Nochmal ganz lieben Dank Euch allen. Ihr habt mir sehr geholfen.
Jetzt kann ich etwas sicherer versuchen, das Ganze gründlich zu vermurksen (was ich schon geschafft hab)

Ich versuche nämlich, die Sekunden wegzulassen, und ihm dafür mit mit

if exist log%date%.log >> log%date:~6,4%-...

zu veranlassen, Logs vom gleichen Tag aneinanderzuhängen.
Klappt noch nicht, aber ich verstehe jetzt wenigstens besser, was der Urheber der Batch da fabriziert hat
Den Rest schaff ich auch noch...

Merci beaucoup!

Lieben Gruss,

Cat
Bitte warten ..
Mitglied: CrazyCat
22.02.2007 um 21:39 Uhr
Ich setze den Beitrag mal auf "gelöst" - nur bin ich leider zu dumm, um Sternchen zu verteilen, tut mir leid. (Sorry, das ich das erst so spät mache - ich hab erst heute einen Kommentar von Biber dazu gefunden, das man das machen kann/sollte).

Mir jedenfalls hat Eure Hilfe grossartig geholfen. Nun, ich hab das alte Batch-File ein "bisserl" umgearbeitet. Ich würde jetzt wohl nur Spam produzieren, würde ich das posten, aber vielleicht ist ja irgendeiner da draussen, der so eine Batch sucht und für den meine Lösung ein wenig hilfreich wäre. Dann schreibt mich per Email an, ok?

Lieben Gruss,

Cat
Bitte warten ..
Mitglied: Biber
22.02.2007 um 22:11 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (22)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...