On 01.05.2022 23:53, Stefan Kanthak wrote:
>> @echo off
>> if [%1]==[] start "" /min %0 a &goto :eof
>> :loop
>> set t=%time:~6,2%
>> title %t%
>> timeout /t 1 >nul
>> goto :loop
>
> IGITT, wie ungeschickt und kap0tt!
Wenn man keine Ahnung von Batch Programmen hat, dann
sollte man auch nicht versuchen sie zu verstehen, sondern
sie einfach nur ausführen.
> 0. sollte %1 ganz trivial Leerzeichen, vom Kommandointerpreter
> missbrauchte Sonderzeichen wie &, |, ^, < und > oder einfach nur
> eine ] enthalten, dann passiert Folgendes:
Wenn du dir das Programm angesehen hättest, hättest du gesehen,
dass %1 entweder leer oder nur den wert a haben kann.
> | C:\Users\Stefan>if [x y]==[] echo *
> | "y]==[]" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Erkläre mir bitte mal wie [%1] gleich [x y] sein kann. Da
Leerzeichen die Parameter trennen, kann ein Leerzeichen nie
Teil eines Parameters sei. Und wenn du den Parameter als "x y"
angibst, dann erhätst du:
if ["x y"]==[] echo *
und das gibt keinen Fehler. Also hier kein Halbwissen wiedergeben,
sondern einfach testen.
Jede Funktion hat einen Definitionsbereich und wenn man sich an
den hält, funktioniert es auch und wenn nicht, kann irgendwas
passieren.
>
> Bill Bo^WGates und seine Kumpane haben zum Einschluss von Zeichen-
> ketten das " vorgesehen und dessen Missbrauch in Dateinamen
> ausgeschlossen!
>
> Korrekt ist IF "%~1" == "" ...
Was soll daran mehr korrekt sein? Alles hat seinen Definitionsbereich
und außerhalb dessen kann es halt schief gehen.
Nimm diese einfache test.bat:
@echo off
IF "%~1" == "" echo Bitte Parameter eingeben
pause
und dann ruf sie mit folgendem Parameter aus:
test.bat a"=="a" echo ""&dir.&echo.
Da können dir dann auch "Bill Bo^WGates und seine Kumpane"
nicht helfen.
> 2. die (UEBERFLUESSIGE) Umgebungsvariable t bleibt nach dem Ende
> dieses Machwerks erhalten.
Da bleibt gar nichts erhalten weil mit "start" eine neue Instanz
von cmd.exe gestartet wird und erst dort wird t gesetzt.
> Koennen die BLUTIGEN und ganz offensichtlich AHNUNGSLOSEN Anfaenger
> bitte ENDLICH aufhoeren, ihre blutigen Anfaengerfehler zu verbreiten?
Ich hab vermutlich schon batch-Code geschrieben, da hast du noch gar
keinen PC gehabt. Du darfst einfach nicht alles glauben, was dir
"Bill Bo^WGates und seine Kumpane" erzählen, sondern einfach mal
selbst was machen.