Vous ne pouvez pas reprendre directement l'exécution d'un fichier batch exactement là où elle s'est arrêtée dans Windows 7 (ou toute autre version de Windows) après un redémarrage ou un arrêt du système. Les fichiers batch sont intrinsèquement apatrides ; ils ne sauvegardent pas leur état interne entre les exécutions.
Cependant, vous pouvez obtenir un effet similaire en utilisant des techniques pour gérer l'état de traitement des fichiers *en externe* par rapport au fichier de commandes. Voici quelques approches :
1. Utilisation d'un fichier temporaire pour suivre la progression :
Cette méthode implique la création d'un fichier temporaire qui stocke le dernier élément ou numéro de ligne traité. Le fichier batch lit ce fichier au début pour déterminer où reprendre.
```lot
@echo désactivé
définir "tempfile=progress.tmp"
définir "inputFile=votre_input_file.txt"
::Vérifiez si le fichier de progression existe. Sinon, recommencez depuis le début.
s'il existe "%tempfile%" (
set /p "lastProcessedLine=" <"%tempfile%"
echo Reprise de la ligne :%lastProcessedLine%
) autre (
définir "lastProcessedLine =0"
echo Commencer depuis le début
)
::Traitez le fichier en commençant par la dernière ligne traitée.
pour /f "skip=%lastProcessedLine% delims=" %%a in (%inputFile%) faire (
echo Ligne de traitement :%%a
::Votre logique de traitement ici...
::Mettez à jour le fichier de progression avec le numéro de ligne actuel.
écho %%a> "%fichiertemp%"
)
del "%tempfile%"
écho Terminé !
```
2. Utiliser une base de données (plus complexe mais robuste) :
Pour des scénarios plus complexes ou des ensembles de données volumineux, une petite base de données (comme SQLite) serait plus adaptée. Le fichier batch mettrait à jour la base de données avec les informations de progression. Cela offre une meilleure résilience et un meilleur suivi. Cette approche nécessite l'installation de SQLite et l'utilisation de ses outils de ligne de commande dans votre script batch.
3. Modification du fichier d'entrée :
C'est moins élégant mais peut fonctionner pour des cas simples. Vous pouvez modifier le fichier d'entrée lui-même pour marquer les lignes traitées (par exemple, ajouter un marqueur au début de chaque ligne). Le script saute ensuite les lignes avec le marqueur. Ceci est moins robuste car cela modifie directement le fichier d’entrée.
Considérations importantes :
* Gestion des erreurs : Ajoutez la gestion des erreurs à vos fichiers batch (par exemple, « si niveau d'erreur 1… »). Si le traitement échoue, votre fichier de progression peut être incohérent.
* Atomicité : Si vous écrivez dans des fichiers, tenez compte des problèmes potentiels liés aux écritures partielles dus à des interruptions. Utiliser des techniques pour garantir l’intégrité des données.
* Verrouillage de fichiers : Si plusieurs instances du fichier de commandes peuvent s'exécuter simultanément, implémentez le verrouillage des fichiers pour éviter les conditions de concurrence.
N'oubliez pas de remplacer `"your_input_file.txt"` par le nom réel de votre fichier d'entrée. L'exemple fourni montre le traitement ligne par ligne, mais vous pouvez l'adapter pour traiter d'autres structures de données. Choisissez la méthode qui correspond le mieux à vos besoins et à votre complexité. L'approche du fichier temporaire est la plus simple pour les cas simples. Pour tout ce qui est plus complexe, une base de données est une solution beaucoup plus robuste.
|