Schtasks est l’outil en ligne de commande Windows qui permet de créer, modifier et gérer des tâches planifiées automatiquement. Cette commande interact directement avec le service Planificateur de tâches Windows et offre un contrôle précis sur l’automatisation de vos scripts batch, programmes et maintenance système.
🔧 Syntaxe de base et premiers pas
La structure générale de schtasks suit ce format :
schtasks /[commande] /tn "[nom_tâche]" [paramètres_spécifiques]
Les commandes principales sont :
| Commande | Description | Usage typique |
|---|---|---|
| /create | Créer une nouvelle tâche | Automatisation initiale |
| /query | Afficher les tâches existantes | Vérification et audit |
| /run | Exécuter immédiatement | Test et dépannage |
| /delete | Supprimer une tâche | Nettoyage système |
| /change | Modifier les paramètres | Mise à jour configuration |
💡 Créer votre première tâche planifiée
Voici un exemple concret pour exécuter un script de sauvegarde chaque jour à 2h du matin :
schtasks /create /tn "Sauvegarde_Quotidienne" /tr "C:Scriptsbackup.bat" /sc daily /st 02:00
Décomposition des paramètres :
- /tn : nom de la tâche (entre guillemets si espaces)
- /tr : chemin complet vers le fichier à exécuter
- /sc : type de planification (daily, weekly, monthly, once, etc.)
- /st : heure de démarrage au format HH:MM
⚙️ Types de planification avancés
Planification par événement système
💻 Conseil pratique : Les déclencheurs système sont parfaits pour les tâches de maintenance automatique.
- Au démarrage :
/sc onstart - À la connexion :
/sc onlogon - En cas d’inactivité :
/sc onidle
Exemple pour nettoyer les fichiers temporaires à chaque connexion :
schtasks /create /tn "Nettoyage_Connexion" /tr "C:Scriptscleanup.bat" /sc onlogon /delay 0000:30
Modificateurs de fréquence (/mo)
Pour un contrôle plus fin, utilisez le paramètre /mo :
- Tous les 2 jours :
/sc daily /mo 2 - Toutes les 2 semaines le lundi :
/sc weekly /d MON /mo 2 - Le 1er de chaque mois :
/sc monthly /mo FIRST
🔐 Gestion des comptes utilisateur et sécurité
Par défaut, les tâches s’exécutent sous le compte de l’utilisateur connecté. Pour modifier cela :
Exécution avec le compte SYSTEM
schtasks /create /tn "Maintenance_Système" /tr "C:Scriptsmaintenance.bat" /sc daily /st 01:00 /ru SYSTEM
Exécution avec un compte spécifique
schtasks /create /tn "Tâche_Utilisateur" /tr "script.bat" /sc daily /st 10:00 /ru "DOMAINEutilisateur" /rp motdepasse
⚠️ Important : Évitez de stocker des mots de passe en dur dans vos scripts. Utilisez plutôt des comptes de service dédiés ou l’authentification Windows intégrée.
🛠️ Administration et maintenance
Consultation des tâches existantes
Pour afficher toutes les tâches :
schtasks /query /fo table /v
Filtrer par nom de tâche :
schtasks /query /tn "Sauvegarde*" /fo list
Modification des propriétés
Changer l’heure d’exécution d’une tâche existante :
schtasks /change /tn "Sauvegarde_Quotidienne" /st 03:00
🌐 Administration à distance
Schtasks permet de gérer les tâches sur des machines distantes :
schtasks /create /s SERVEUR01 /u DOMAINEadmin /p motdepasse /tn "Maintenance_Distante" /tr "script.bat" /sc weekly
Paramètres de connexion distante :
- /s : nom ou IP du serveur distant
- /u : nom d’utilisateur pour la connexion
- /p : mot de passe (ou * pour saisie interactive)
📋 Cas d’usage pratiques
1. Sauvegarde automatique des bases de données
schtasks /create /tn "Backup_DB_Nightly" /tr "C:Scriptsdb_backup.bat" /sc daily /st 23:30 /ru SYSTEM
2. Nettoyage des logs système
schtasks /create /tn "Log_Cleanup" /tr "forfiles /p C:Logs /m *.log /d -7 /c "cmd /c del @path"" /sc weekly /d SUN /st 02:00
3. Redémarrage automatique de services critiques
schtasks /create /tn "Restart_WebService" /tr "net stop w3svc & net start w3svc" /sc daily /st 04:00 /ru SYSTEM
🔧 Intégration dans vos scripts batch
Voici un exemple de script batch qui crée une tâche conditionnelle :
@echo off
:: Vérifier si la tâche existe déjà
schtasks /query /tn "MonScript" >nul 2>&1
if %errorlevel% == 0 (
echo Tâche existante trouvée, suppression...
schtasks /delete /tn "MonScript" /f
)
:: Créer la nouvelle tâche
echo Création de la tâche planifiée...
schtasks /create /tn "MonScript" /tr "%~dp0myscript.bat" /sc daily /st 08:00
if %errorlevel% == 0 (
echo Tâche créée avec succès
) else (
echo Erreur lors de la création
exit /b 1
)
🚨 Dépannage et erreurs courantes
Messages d’erreur fréquents
| Erreur | Cause probable | Solution |
|---|---|---|
| ERROR: Access is denied | Droits insuffisants | Exécuter en tant qu’administrateur |
| ERROR: The filename, directory name, or volume label syntax is incorrect | Chemin invalide | Vérifier le chemin et les guillemets |
| ERROR: The specified task name already exists | Tâche existante | Utiliser /f pour forcer ou changer le nom |
Diagnostic des tâches qui ne s’exécutent pas
- Vérifier le statut :
schtasks /query /tn "NomTâche" /fo list /v - Consulter l’historique : Ouvrir l’Observateur d’événements Windows
- Tester manuellement :
schtasks /run /tn "NomTâche" - Vérifier les permissions sur le fichier cible et le répertoire de travail
🛡️ Bonnes pratiques de sécurité
✅ Recommandations de sécurité
- Utiliser des comptes de service dédiés avec privilèges minimaux
- Éviter l’exécution sous SYSTEM sauf nécessité absolue
- Auditer régulièrement les tâches planifiées
- Stocker les scripts dans des répertoires protégés
- Implémenter une journalisation détaillée
🔄 Import/Export et migration
Exporter une tâche au format XML :
schtasks /query /tn "MaTâche" /xml > tache_exportee.xml
Importer une tâche depuis un fichier XML :
schtasks /create /tn "NouvelleTâche" /xml tache_exportee.xml
❓ FAQ – Questions fréquentes
Comment créer une tâche qui s’exécute toutes les 5 minutes ?
Utilisez : schtasks /create /tn "Tâche_Fréquente" /tr "script.bat" /sc minute /mo 5
Peut-on créer des tâches sans droits administrateur ?
Non, la création de tâches planifiées nécessite obligatoirement des privilèges administrateur. Cependant, l’exécution peut se faire sous un compte utilisateur standard.
Comment programmer une tâche pour qu’elle ne s’exécute que si l’ordinateur est inactif ?
Ajoutez le paramètre /i [minutes] pour spécifier la durée d’inactivité requise avant l’exécution.
Comment éviter qu’une tâche s’exécute si l’ordinateur fonctionne sur batterie ?
Cette fonctionnalité n’est pas disponible directement via schtasks. Utilisez l’interface graphique du Planificateur de tâches ou PowerShell avec le module ScheduledTasks.
Comment créer une tâche qui s’auto-détruit après exécution ?
Ajoutez cette commande à la fin de votre script : schtasks /delete /tn "%~n0" /f
🔗 Ressources complémentaires
- Documentation officielle Microsoft sur schtasks
- Module PowerShell ScheduledTasks
- Rob van der Woude – Scripts Batch avancés
- Stack Overflow – Questions schtasks
- Forum Microsoft TechNet PowerShell
Schtasks reste un outil fondamental pour l’automatisation sous Windows. Sa maîtrise permet de créer des environnements système robustes et autonomes, essentiels pour l’administration moderne en 2025. L’évolution vers PowerShell et les solutions cloud n’enlève rien à sa pertinence pour les infrastructures hybrides actuelles.