Wie kann man in Batch die Datei minimiert starten?
Es sol so sein, dass wenn die Datei gestartet wird sie sich minimiert öffnet und sozusagen im Hintergrund arbeitet.
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.
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:
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?
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.
Ich möchte, dass man die Datei anklickt und es ploppt aber nicht das Fenster auf, sondern startet sich minimiert.