Es ist für ein Wirtschaft Projekt und dazu muss man keine aber sollte man eine App oder Website erstellen

(aus einem Kommentar von gestern)

Statt einer App würde ich eine Webseite empfehlen. Geht deutlich schneller und leichter zu entwickeln.
Also wäre zum einen günstiger, falls du wirklich jemanden beauftragen willst. Zum anderen könntest du das aber auch leichter selbst machen. Gibt inzwischen gute Tools um Webseiten grafisch, also ohne Programmieren, zu erstellen. Und auch ein wenig Code für eine Webseite kannst du einfacher selbst lernen und schreiben, als eine komplette App aufzusetzen.

...zur Antwort

Die einfachste Art einen POST-Request an den Server zu schicken ist mithilfe eines Formulars. z.B. so:

<form action="thenextpage.php" method="post">
    <input type="text" name="yourinput"><br>
    <input type="submit">
</form>

Der Grund warum ich als Ziel des Requests "thenextpage.php" angegeben habe, ist dass es vermutlich am leichtesten ist, zunächst ein PHP Backend zu bauen. Du kannst nämlich dann ganz normal HTML schreiben. Aber du kannst dazwischen auch immer kleine PHP-Code-Schnipsel verwenden. Für thenextpage.php dann zum Beispiel so:

<body>
<h1>I recieved your message:</h1>
<p><?php echo $_POST["yourinput"]; ?></p>
</body>

Hier verwendest du PHP um den Inhalt des Post-Request Parameters "yourinput" auszugeben.

...zur Antwort

Ich mein du kannst einfach das Linux PHP package installieren und damit PHP Code auf Android ausführen. Also im Terminal (bzw. per Termux App o.ä.) einfach

apt install php 

Aber das mal beiseite, ich denke nicht, dass das was du da vor hast sinnvoll ist. Was genau willst du denn erreichen? Dafür muss es auch bessere Wege geben, als einen PHP Server auf Android zu hosten 😅

...zur Antwort

Ziemlich offensichtlich würde ich schwarz als Hintergrund- und grün und weiß als Primär-/Sekundärfarbe verwenden. Dann vielleicht klare Kanten ohne Abrundung, teilweise schräge Linien und große, kontrastreiche Typografie.

Was soll denn der Inhalt der Seite sein?

...zur Antwort

Während du wahrscheinlich bei vielen Tutorials noch eine Lösung mit `float: left` und dergleichen siehst, kann man inzwischen ganz einfach flex oder grid dafür verwenden.

Dazu packst du einfach die beiden Elemente in einen gemeinsamen Container und legst dann das Layout dieses Containers als flex fest. Zum Beispiel so:

<div class="outer">
  <img src="https://picsum.photos/200/300">
  <div class="inner">
    Content
  </div>
</div>

CSS:

.outer {
  display: flex;
}

Hier als JSFiddle mit Resultat: https://jsfiddle.net/timlg07/qfswaezo/6/

Mit flex-base bei den Kindelementen und mit object-fit für das Bild kannst du das Layout dann noch an deine Bedürfnisse anpassen.

...zur Antwort

Das liegt daran, dass JavaScript denkt du würdest den Text (String) schon mit dem ersten Anführungszeichen beenden. Wenn du also

document.getElementById("main_div").innnerHTML = "<div id="evaluation"></div>"

schreibst, dann ließt der JS-Parser zunächst

document.getElementById("main_div").innnerHTML = "<div id="

und kann das darauf folgende evaluation nicht verarbeiten.

Um zu signalisieren, dass die Anführungszeichen bei deiner ID Teil des Strings sein sollen, kannst du diese mit einem Backslash escapen:

document.getElementById("main_div").innnerHTML = "<div id=\"evaluation\"></div>"

Alternativ kannst du übrigens Elemente auch direkt im DOM (Document Object Model) erstellen:

const mainDiv = document.getElementById("main_div")
const newDiv = document.createElement("div")
newDiv.id = "evaluation"
mainDiv.appendChild(newDiv)

Ist mMn die bessere und weniger fehleranfälligere Variante.

Ich würde dir darüber hinaus empfehlen eine anständige IDE (Entwicklungsumgebung) zu verwenden. Dann werden dir so einfache Syntax-Fehler direkt angezeigt.

...zur Antwort

Läuft der Bot durchgehend? Dann würde ich einfach einen Timer anlegen, der nach 48h eine Funktion aufruft. Beispiel und weitere Infos: https://docs.python.org/3/library/threading.html#timer-objects

...zur Antwort

Du kannst dafür z.B. den Beep von `choice` missbrauchen, indem du statt einer Benutzereingabe einfach per Pipe eine leere Eingabe reingibst:

echo;|choice/N 2>nul

Für mehr Variation kannst du auch per run-dll folgende Funktion aufrufen:

rundll32.exe Kernel32.dll,Beep 750,300

(https://docs.microsoft.com/de-de/windows/win32/api/utilapiset/nf-utilapiset-beep)

Oder du verwendest dieses Skript hier, das einen Hybrid aus Batch und JScript darstellt:

https://raw.githubusercontent.com/npocmaka/batch.scripts/master/hybrids/.net/systemSounds.bat

...zur Antwort
 ob ein bestimmer Wert (z.B. X) in mindestens einer der fünf Variablen enthalten ist.

Dies sollte recht einfach gehen:

for /L %%i in (1 1 5) do if %X% equ !Var%%i! set /a found += 1

Am Ende ist found == Anzahl der Variablen, die gleich X sind.

Im ersten Fall möchte ich überprüfen, ob mindestens drei davon gleich sind.

Hierfür ein, von der Laufzeit gesehen, komplexerer Algorithmus:

for /L %%i in (1 1 5) do (
  set /a currentlyFound = 0
  for /L %%j in (1 1 5) do (
    if !Var%%i! equ !Var%%j! (
      set /a currentlyFound += 1
    )
  )
  if !currentlyFound! geq 3 echo more than 3 elements are !Var%%i!
)

Die Ausgabe erfolgt dann natürlich 3 oder mehr mal (für jeden Index, der eines der 3 mehrfach vorkommenden Elemente enthält).

Hier noch mal das erste Programm mit Beispielvariablen zum Testen:

@echo off & setlocal enabledelayedexpansion
for /L %%i in (1 1 5) do (
  set /a Var%%i=!random! %% 3
  echo !Var%%i!
)
echo.

set /a X = 2
set /a found = 0

for /L %%i in (1 1 5) do (
  if %X% equ !Var%%i! (
    set /a found += 1
  )
)
echo %X% was found %found% times.
pause

Und das zweite:

@echo off & setlocal enabledelayedexpansion
for /L %%i in (1 1 5) do (
  set /a Var%%i=!random! %% 3
  echo !Var%%i!
)
echo.


for /L %%i in (1 1 5) do (
  set /a currentlyFound = 0
  for /L %%j in (1 1 5) do (
    if !Var%%i! equ !Var%%j! (
      set /a currentlyFound += 1
    )
  )
  if !currentlyFound! geq 3 echo more than 3 elements are !Var%%i!
)
pause
...zur Antwort

(1) Erkennen der Frage nach einem Witz.

Da du anscheinend schon einen funktionierenden Chatbot hast, sollte das ja recht einfach gehen. Du musst also nur z.B. die Keywords Witz, lustig, etc. hinzufügen.

(2) Metadaten über deine Witzdatei erfassen.

Du brauchst hier lediglich die Anzahl an Zeilen, um dir später dann eine davon zufällig aussuchen zu können. Mit einer for-Schleife kannst du die ganz simpel zählen.

(3) Eine Zeile zufällig auswählen.

Die durch %random% generierte Zufallszahl auf den hier benötigten Zahlenbereich von [1; Zeilenlänge] bringen. Sehr simple, wenn auch nicht optimale Methode hierfür wäre:

set /a selectedLine=%random% %% lines + 1

(4) Die Zeile ausgeben.

Du traversierst hierfür alle Zeilen deiner Witze-Datei und gibst die Zeile mit der zuvor berechneten Zeilennummer aus. Dies kannst du mithilfe von findstr /n, mit einer Hilfsvariable oder mittels dekrementieren der selectedLine-Variable erledigen.

Die Schritte 2 bis 4 habe ich in dieser Antwort schon für Verzeichnisse umgesetzt:

https://www.gutefrage.net/frage/cmd-zufaelliges-wort#answer-347286974

Du musst die for-Schleifen also nur noch anpassen, dass sie sich auf Textdateien beziehen.

...zur Antwort

Ich habe vor einiger Zeit bereits auf eine ähnliche Frage geantwortet (https://www.gutefrage.net/frage/batchdatei-hoehere-zufallswert-als-32768#answer-336018767) mithilfe von diesem Code kannst du ganz einfach eine achtstellige Zufallszahl erzeugen, oder 2 vierstellige mit einem Bindestrich aneinanderhängen:

@echo off
call :randomNumber 4
set "n=%return%"
call :randomNumber 4
set "n=%n%-%return%"
echo %n%
pause & exit

:: returns random number (base 10) with %~1 digits.
:randomNumber <digits>
    setlocal enableDelayedExpansion
        set "return="
        for /L %%i in (1,1,%~1) do (
            set /a "r = (10 * !random!) / 32768"
            set "return=!return!!r!"
        )
    endlocal & set "return=%return%"
exit /b
...zur Antwort

Du kannst mit NirCmds "win focus" ein bestimmtes Fenster fokussieren, weiteres dazu findest du hier: https://nircmd.nirsoft.net/win.html

Einen bestimmten Tab des Fensters auswählen geht von der cmd aus nur unter Verwendung von externen Tools, nur sehr sehr aufwendig und alles andere als zuverlässig, da wäre es besser du startest die Seite, die du fokussiert haben willst einfach per "start" von der Batch aus.

Das senden von Tastendrücken kannst du hingegen komplett ohne zusätzlich zu installierende Programme erledigen. Du kannst dir eine vbs Datei erstellen (manuell oder automatisch mit Batch), in der du mit CreateObject("WScript.Shell") ein shell Objekt anlegst und auf diesem dann SendKeys aufrufst.

Was hast du denn endgültig vor? Gibt es wirklich keine bessere Lösung für dein Problem, als Benutzerinteraktionen zu simulieren?

...zur Antwort

Mit einem Rubber Ducky geht das relativ einfach (also z.B. so etwas: https://shop.hak5.org/products/usb-rubber-ducky-deluxe).

Mit einem normalen USB-Stick kannst du lediglich eine autorun.inf erstellen, allerdings wird das inzwischen in fast allen Fällen nicht mehr funktionieren.

...zur Antwort

Was mir zuerst auffällt sind die falschen if-Abfragen: Du hast hier Zahlen vorliegen, da solltest du keinen String-Vergleich durchführen und demnach auch keine Anführungszeichen verwenden. Vor allem aber solltest du nie die Anführungszeichen nur auf einer Seite verwenden, da z.B. `5=="5"` oder auch `16 leq "16"` immer false ist.

Zudem brauchst du keine else-if Verschachtelung, wenn du nur goto's benutzt.

Was aber wahrscheinlich den Fehler verursacht hat, ist das Springen zu Labels, welche nicht existieren. Ich habe dir hier mal eine verbesserte Version aufgeschrieben:

set /a ergebnis=%F1%+%F2%+%F3%+%F4%+%F5%
echo.
echo Deine Punktzahl ist %ergebnis%
echo.

ping localhost -n 3 >nul
if %ergebnis% LEQ  7 goto schlecht
if %ergebnis% LEQ 12 goto besser
if %ergebnis% LEQ 16 goto gut
if %ergebnis% LEQ 20 goto ehrenmann

:schlecht
  echo schlecht
  goto ende

:besser
  echo besser
  goto ende

:gut
  echo gut
  goto ende

:ehrenmann
  echo ehrenmann

echo wie auch immer
...zur Antwort

Mit start /b kannst du eine Art zweiten Thread im gleichen Fenster starten und dort dann eine Sekunde warten. Oder du startest eine zweite Batch minimiert und beendest die erste nach einer Sekunde...

Aber warum so kompliziert, wenn der Befehl den du bereits benutzt schon diese Funktion eingebaut hat?

choice /c abc /t 1 /d c

/t 1 lässt dem Benutzer nur eine Sekunde Zeit eine Auswahl zu treffen. Hier eine genauere Beschreibung aus der Hilfe von choice (choice /?):

/T    Zeitlimit  Bestimmt die Länge der Pause vor der Auswahl
                 in Sekunden. Gültige Wert sind 0 bis 9999.
                 Der Wert 0 bedeutet keine Pause und Verwendung
                 der Standardauswahl.

/D    Auswahl    Bestimmt die Standardauswahl nach nnnn Sekunden.
                 Zeichen müssen im Auswahlsatz durch die Option
                 /C und nnnn mit Option /T festgelegt werden.
...zur Antwort

Ein Skript um bestimmte Dateien zu suchen, habe ich vor kurzem erst für diese Frage hier geschrieben. Das sieht dann ungefähr so aus:

@echo off

:: CONFIG ::
set searchDirectory="C:\User\"
set searchString="test.txt"
:: CONFIG ::

set result="%TEMP%\search_result.txt"
cd /D %searchDirectory%
dir /s /b | findstr %searchString% > %result%

:read
set amount=0
for /f "usebackq tokens=*" %%f in (%result%) do (
    set /a amount += 1
)

if %amount% equ 0 (
    echo Datei wurde nicht gefunden.
    del %result%
    pause & exit /b 1
)
if %amount% gtr 1 (
    echo Mehrere Dateien gefunden.
    echo Druecken Sie eine beliebige Taste um alle gefundenen Dateien angezeigt zu bekommen.
    echo Loeschen Sie dann alle ungewuenschten Zeilen, sodass am Ende nur die zu kopierende Datei in der ersten Zeile steht.
    echo Dann speichern Sie ihre Auswahl mit [Strg] + [s] und schliessen das Fenster.
    pause
    notepad %result%
    goto read
)

set /p file=<%result%
del %result%
echo Gefundene Datei: %file%
pause

Die Funktionalität zum Ersetzen der Datei kannst du entweder schnell selbst am Ende einbauen, oder du erklärst genauer, was getan werden soll.

...zur Antwort

Habe dir mal eben eine kleine Batch hierfür geschrieben. Das eigentliche Suchen der Datei wird dabei so erledigt:

dir /s /b | findstr %searchString%

Das komplette Programm kann dann auch mit mehreren gefundenen Dateien umgehen und erledigt auch das kopieren. Die Parameter im CONFIG-Bereich kannst du je nach deinen Anforderungen anpassen.

@echo off

:: CONFIG ::
set searchDirectory="C:\User\"
set searchString="test.txt"
set outputFolder="D:\output"
:: CONFIG ::

set result="%TEMP%\search_result.txt"
cd /D %searchDirectory%
dir /s /b | findstr %searchString% > %result%

:read
set amount=0
for /f "usebackq tokens=*" %%f in (%result%) do (
    set /a amount += 1
)

if %amount% equ 0 (
    echo Datei wurde nicht gefunden.
    del %result%
    pause & exit /b 1
)
if %amount% gtr 1 (
    echo Mehrere Dateien gefunden.
    echo Druecken Sie eine beliebige Taste um alle gefundenen Dateien angezeigt zu bekommen.
    echo Loeschen Sie dann alle ungewuenschten Zeilen, sodass am Ende nur die zu kopierende Datei in der ersten Zeile steht.
    echo Dann speichern Sie ihre Auswahl mit [Strg] + [s] und schliessen das Fenster.
    pause
    notepad %result%
    goto read
)

set /p file=<%result%
del %result%
cd /D %outputFolder%
copy "%file%"
pause
...zur Antwort