How to Automatically Execute Batch Files on Startup in Windows Server 2008 R2: A Sysadmin’s Guide


4 views

There are several reliable ways to execute batch files during system startup in Windows Server 2008 R2. Each method serves different scenarios and permission requirements.

The simplest approach is placing your batch file in the system's Startup folder:

  1. Press Win+R, type shell:common startup and press Enter
  2. Create a shortcut to your batch file in this folder

Example shortcut target:

%windir%\system32\cmd.exe /c "C:\scripts\my_startup.bat"

For more control over execution context:

schtasks /create /tn "StartupScript" /tr "C:\scripts\startup.bat" /sc onstart /ru SYSTEM /rl HIGHEST

For system-wide execution (requires admin rights):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"MyStartupScript"="\"C:\\scripts\\server_init.bat\""
  • Always test scripts in non-production environments first
  • Implement proper error logging in your batch files
  • Consider using PowerShell for more complex startup tasks

If your script isn't executing:

@echo off
echo %DATE% %TIME% >> C:\logs\startup.log
REM Your actual commands here
echo Completed >> C:\logs\startup.log

Check Windows Event Viewer for system-level errors under:
Applications and Services Logs -> Microsoft -> Windows -> TaskScheduler


In Windows Server 2008 R2, there are several reliable methods to execute batch files during system startup. The most common approaches involve using the Startup folder, Task Scheduler, or registry entries. Each method has distinct advantages depending on your specific requirements.

The simplest approach is placing your batch file in the system's Startup folder:

1. Create your batch file (e.g., C:\scripts\myscript.bat)
2. Press Win+R and type: shell:startup
3. Create a shortcut to your batch file in this folder

Example batch file content:

@echo off
echo Starting backup process...
robocopy C:\data D:\backup /MIR /LOG:C:\logs\backup.log
net start "MyCustomService"

For more control over execution timing and privileges, use Task Scheduler:

schtasks /create /tn "StartupScript" /tr "C:\scripts\myscript.bat" /sc onstart /ru SYSTEM /rl HIGHEST

Key parameters:

  • /sc onstart - Runs at system startup
  • /ru SYSTEM - Runs with system privileges
  • /rl HIGHEST - Highest privilege level

For system-wide execution (affects all users):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"MyStartupScript"="C:\\scripts\\myscript.bat"

Save as a .reg file and import, or use this PowerShell command:

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "MyScript" -Value "C:\scripts\myscript.bat"

When implementing startup scripts:

  • Always test scripts with proper error handling
  • Consider execution order dependencies
  • For delayed execution, add timeout commands:
timeout /t 30 /nobreak
start "" "C:\program\myapp.exe"

If your script isn't executing:

  1. Verify file permissions (especially when running as SYSTEM)
  2. Check execution policy: Get-ExecutionPolicy
  3. Review Event Viewer logs (Windows Logs > Application)
  4. Test script execution manually first