Wie kann man in Batch die Datei minimiert starten?

3 Antworten

Hier ein Tip von mir:

Ändere die Dateiendung von .bat auf .ps1 Dann wird das von der Windows Powershell ausgeführt. Die Windows Powershell enthält auch die Batch-Befehle.

Und mit diesem Tool kann man dann die .ps1 Datei in eine EXE-Datei kompilieren: https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5 Dort kann man dann ein auch Parameter -noconsole angeben, dann erscheint kein Fenster.

minimized.cmd

@echo off
  rem alles  bis zum Label :minimized sorgt  für  einen  minimierten  Start
set self=%~f0
if "%1"=="minimized" goto :minimized
cd %~dp0
start "" /min  cmd /c "%self%" minimized
exit /b
:minimized
  
  rem das folgende  durch  deinem kram ersetzen
echo hier hier alles  was  nicht zu sehen sein  soll
pause
exit /b

Um noch einen draufzusetzen...

hidden.cmd

@echo off


  rem dem unsichtbaren Zielfenster einen markanten Namen geben:
set "WindowName=Rumplheinzchen"  


set self=%~f0
if  not "%~1"=="" goto :mainloop
cd %~dp0


  rem damit man nicht die versteckte Batch im Taskmanager beenden muss, wird eine evtl laufende versteckte Version gekillt
taskkill /f  /fi "windowtitle eq %WindowName%" | find "PID">nul &&(
      rem war Dies erfolgreeich : Meldung ausgeben
    echo HintergrundBatch beendet!
      rem warte 3 sekunden
    timeout 3 >nul
      rem batch ohne weitere Maßnamen
    exit /b
)


echo var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%self:\=\\%', 'runFlag', '', 'open', 0)>"%temp%\runHidden.js"
cscript /nologo "%temp%\runHidden.js"
del /q "%temp%\runHidden.js"
exit /b


  rem hier  beginnt der eigentliche Teil, welcher unsichtbar  läuft. 
:mainloop
  rem Fenstertitel setzen!wichtig, damit Taskkill die Hihtergrundbatch ermitteln kann!
title %WindowName%
  rem ab hier kannst Du  auch Deinen Code verwenden...
  
  rem Beep-Trick: choice erwartet die Eingabe von x, und Beept bei falschen Eingaben
  rem also sende ich 3mal a an Choice und dann x... Beep Beep Beep    
echo aaax|choice /c x >nul
  rem warte 10Sekunden und Beepe wieder
timeout 10 >nul
 goto :mainloop


rem  eine Endbedingung  entfällt, da  beim nächtsten start der Batch   diese Instanz  gekillt wird....

...startet komplett unsichtbar.

Der Nächste Aufruf der Batch beendet diese wieder.

hidden googler.cmd

@echo off
chcp 65001 >nul


set "WindowName=BadGoogle"  


set "self=%~f0"
if  not "%~1"=="" goto :mainloop
cd "%~dp0"
taskkill /f  /fi "windowtitle eq %WindowName%" | find "PID">nul &&(
    echo HintergrundBatch beendet!
    timeout 3 >nul
    exit /b
)


echo var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%self:\=\\%', 'runFlag', '', 'open', 0)>"%temp%\runHidden.js"
cscript /nologo "%temp%\runHidden.js"
del /q "%temp%\runHidden.js"
exit /b


  rem hier  beginnt der eigentliche Teil, welcher unsichtbar  läuft. 
:mainloop
title %WindowName%
  rem hier Suchstrings eintragen ;) 
for %%a in ("jungs+grüne+Haare" , "Inkontinenz+Teenager" , "rosa+Einhörner" , "niedliche+Kätzchen" , "böse+Hunde" ) do (
      rem immer der Standardbrowser
    start "" "https://www.google.com/search?q=%%~a"
    timeout 20
)
goto :mainloop


@echo off
chcp 65001 >nul
for %%a in ("jungs+grüne+Haare" , "rosa+Einhörner" , "niedliche+Kätzchen" , "böse+Hunde" ) do (
    timeout 20
      rem immer der Standardbrowser
    start "" "https://www.google.com/search?q=%%~a"
)

...das selbe in grün... auch hier beendet der nächste Aufruf die Batch.

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

Wie möchtest du das Script denn starten? Wenn du das per Link machst, geht das einfach. Per AutoStart-Ordner oder Scheduled Task ebenfalls.

Eine Idee wäre noch der Bat2Exe-Konverter:

https://technikblog.gerhard-kerner.at/index.php?/archives/129-Batch-Datei-minimiert-starten-ohne-DOS-Fenster.html


Simon18066 
Beitragsersteller
 25.11.2020, 16:37

Ich möchte, dass man die Datei anklickt und es ploppt aber nicht das Fenster auf, sondern startet sich minimiert.

0
mjutu  25.11.2020, 16:55
@Simon18066

Und würde es auch ein Link auf die Datei tun, die aber an anderer Stelle liegt? Oder muss es eine einzige Datei sein?

Hast du den Batch2Exe-Konverter schon ausprobiert?

0
Simon18066 
Beitragsersteller
 25.11.2020, 17:07
@mjutu

Habe ich, nur ist das Problem, dass ich die Datei dann nicht normal öffnen kann. Ich will nämlich, dass sie standartmäßig Minimiert ist und wenn man in der Taskleiste auf die Datei klickt, dass sie dann normal das Fenster anzeigt.

0