Lustige CMD'S?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

schau Dich mal unter : https://www.gutefrage.net/home/thema/batch-trick/neue um.

Im Laufe der Jahre habe ich Anfänger mit diversen nützlichen und unnützen Spielereien beglückt.

Eseltargets.cmd

<!-- : Begin batch script 
::don't remove the first line!
@echo off
  rem hier Anzahl der  Fenster festlegen!
set "WindowCount=3"

for /l %%a in (1,1,%WindowCount%) do start "" mshta.exe "%~f0" 
exit /b
::exit /b prevent's the Batch from parsing the leftover of the batchfile
::after the next line begins the HTML/HTA itself
-->
<!DOCTYPE html>
<meta http-equiv="x-ua-compatible" content="ie=9">
<!-- 
bis  zum initialisieren aller  css-Parameter Fenstergröße 0 oder 1  -->
<script>resizeTo(0,0);window.offscreenBuffering = "true";</script>
<hta:application ID="oHTA" border="none" caption="no" contextmenu="no" innerborder="no" scroll="no" selection="no" > <!--showInTaskBar="no"  könnte  auch  noch  nützlich sein-->


<html>
<style>
html, body{
    width: 100%;
    height: 100%;
    margin: 0px;
}


body{
      /* hier die Bildadresse online, local, oder Base64-Bild eintragen , zweite url als  Alternative...: zB.Bild im gleichen Ordner wie die Batch  */
    background-image: url("https://img2.dreamies.de/img/901/b/5uzu36uou6w.gif")
                    , url("dein bild im Ordner.jpg"); */ das Komma vor url ist wichtig!*/
    background-color: Black;
      /* so passt  jedes Bild immer in den Kasten   cover oder contain*/
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    color: Red;
}
</style>

<script>
var timer,z,dX,dY,tOut;

  /* mit den folgenden 2 Werten kannst Du etwas Variieren*/
s=500; //größe des Bildfensters
maxMove=20; //max Bewegungsweite pro Aktualiserung mehr  schneller , weniger  langsamer..

cps=1000/30; //Aktualisierungen pro Sekunde (1000ms)
x=window.screenLeft; //get startposition
y=window.screenLeft; //dito
maxX=screen.availWidth-s;
maxY=screen.availHeight-s;


function init(){
    resizeTo(s,s);
    moveTo(x,y);
    randomTOut();
    flee();
};


//endless Loop! ...will break  by   clearTimeout(timer)
function randomTOut(){
  tOut=(Math.round((Math.random())*480)+20)*10;
  moveControl();
  timer=setTimeout(function(){randomTOut()},tOut);
};

function moveControl(){
    /* dX,dY become  random  between -maxMove and +maxMove,
     the  sign determines the direction*/
    dX=Math.round(Math.random()*maxMove*2-maxMove);
    dY=Math.round(Math.random()*maxMove*2-maxMove);
};


function flee(){
  z=setInterval(function(){
    if (x>0) {x+=dX;} else {dX=Math.abs(dX);x+=dX;};
    if (y>0) {y+=dY;} else {dY=Math.abs(dY);y+=dY;};
    if (x<maxX) {x+=dX;} else {dX=-Math.abs(dX);x+=dX;};
    if (y<maxY) {y+=dY;} else {dY=-Math.abs(dY);y+=dY;};
    moveTo(x,y);
  }, cps);
};


function closeW(){
  //clear all timmerevents  befor  closing the window!  
  clearTimeout(timer);
  clearInterval(z);
  close()
};
</script>


<!-- Mausklick  killt das  Fenster   Das Fenster  sollte  dann  schon  recht groß sein
     bei  kleinen Fenstern  verwende statt onclick onmouseover-->
<body onload="init()" onclick="closeW()">

<!-- Hier   kannst Du Dich äußern-->
<h1>Hallo</h1>
<p>Ich will Spass</p>

</body>
</html>

...oder meine Quasseluhr.cmd

@echo off
  rem Umlaute erlauben
chcp 65001>nul
  rem fenstergröße
mode 50,2
title Quasseluhr

set "sayJS=%temp%\say.js"
set "Speed=-1"
set "Volume=100" 
echo s=new ActiveXObject('SAPI.SpVoice');s.Rate=%Speed%;s.Volume=%Volume%;a='';for (i=0;i^<WScript.Arguments.length;i++){a+=WScript.Arguments(i)+' '};s.Speak(a,0)>"%sayJS%"
set talk=cscript //nologo "%sayJS%"
set talkAsync=start "" /b %talk%
::Ende Sprachausgabe einrichten


%talk% Ich bin Deine Quassel-uhr.
%talk% Schön das du mich die Zeit ansagen lässt


:loop
  rem erzeuge Beep...
echo ax|choice /c x >nul
cls
echo He Meister, beim Piepton war es %time:~0,8% Uhr
  rem sage  die Uhrzeit
%talkAsync% He Meister, beim Piepton war es %time:~0,8% Uhr
  rem warte 60 Sekunden (kleine Zeitverschiebungen sind möglich, der Piepton und cls dauert auch etwas Zeit und läuft nicht Asynchron)
timeout 60 >nul
goto :loop

Mal billig mit coppy und Paste übernehmen ist ok. Aber saug dich nicht zusehr an Batch als Sprache fest. Batch kan ganz schnell sehr fies und kompliziert werden.

Wenn Du dich näher mit einer Systemnahen Scriptsprache beschäftigen willst, ist Powershell in jedem Fall der bessere Partner.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren