Programm, welches die Netzwerk-Verbindung prüft und protokolliert

1. SET username? Was hat das da zu suchen? username IST bereits definiert, vom System. Du solltest daher direkt aus der Batch heraus ohne weiteres Zutun %username% abfragen können.

2. Aso, sorry, ich hab da was verpeilt. Hatte mir das Time-Gedingse offen gestanden aus einem google-Ergebnis geklaut, weil ich zu faul war die Indizes selbst rauszufriemeln. Dumm nur, dass in der Vorlage die Indizes falsch waren (vermutlich englisches Datum oder so). Hatte das dann vorm Posten auch in der VM korrigiert - musste ich halt doch wieder selbst die Indizes setzen - und wollte es korrigiert via Copy&Paste hier posten, aber da hat mir die VM einen Strich durch die Rechnung gemacht und im Hauptsystem war noch das falsche in der Zwischenablage ;)

Code:
SET filename=%date:~6,4%-%date:~3,2%-%date:~0,2%_%stunden%%time:~3,2%%time:~6,2%.txt
 
ahh, verstehe, das SET username ist überflüssig, da scheinbar SET nur verwendet wird, wenn man selbst etwas definiert. klingt schlüssig. irgendwie tut es das noch nicht so ganz, s. screenshot. ... im Hintergrund siehst Du die Datei, welche erzeugt wird.
774237
 
Teste das erstmal ohne diese Monsterzeile. Einfach nur SET filename=... und dann darunter echo %filename%. Irgendwie hast du da ein IF stehen. Editierst du die Batch mit notepad? Bei sowas ist notepad++ stets die bessere Wahl, weil man da auch nicht-druckbare Zeichen sehen kann, zum Beispiel CR und LF. Eventuell ist da was nicht in Ordnung und cmd hängt die folgende IF-Anweisung direkt hinten dran, weil kein vollständiger Zeilenumbruch erkannt wurde.
Ergänzung ()

So sieht das bei mir aus:

Code:
@echo off

SET stunden=%time:~0,2%
if %stunden% lss 10 (set stunden=0%time:~1,1%)

SET filename=%date:~6,4%-%date:~3,2%-%date:~0,2%_%stunden%%time:~3,2%%time:~6,2%.txt

echo %filename%

Output: 2019-04-18_094427.txt

(hab bewusst die Zeit auf <10:00 gestellt zwecks der führenden Null)
Ergänzung ()

Ah ne! In der Monsterzeile war ja ne For-Schleife.......

Dann versuch mal !filename! statt %filename%
 
okay, mache es fortan mit notepad++

also bei Deinem Code oben ist das cmd-Fenster (also Ausführen der Batch-Datei) gleicher wieder zugegangen. Was ist die Erwartungshaltung? ...dass in dem schwarzen Fenster das Ergebnis des "Filename" steht?

Mit diesem Code (!filename!) ...
Code:
@echo off

SET stunden=%time:~0,2%
if %stunden% lss 10 (set stunden=0%time:~1,1%)
SET filename=%date:~6,4%-%date:~3,2%-%date:~0,2%_%stunden%%time:~3,2%%time:~6,2%.txt

ping -t 192.168.178.254|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!date! !time! !data!)" > C:\Users\%username%\Desktop\network\!filename!
...bekomme ich eine neue Datei, aber noch immer keine .txt.

774248


Macht es einen Unterschied, ob das .txt unten reinkommt?
 
Batches testet man am besten nicht per Doppelklick, sondern über die Kommandozeile. Dann sähe man auch, dass mein obiges Snippet nur ein echo auswirft und wie angegeben der Output aus dem Dateinamen besteht. Wenn du mit Batch nicht umgehen kannst, ist es keine gute Idee immer das ganze Skript zu testen. Daher schau erstmal ob der Dateiname korrekt gebaut wird - mittels einer simplen Batch mit echo und ohne die Batchzeile des Grauens.

Allmählich komme ich aber zu dem Schluss, dass Batch hier einfach nicht das richtige Mittel der Wahl ist. Batch is a bitch, weil es einfach eine unzureichende Skriptsprache ist, die mit vielen Eigenheiten zu kämpfen hat.
 
Zurück
Oben