J'ai un fichier séquentiel qui analyse un tas de noms de fichier dans un fichier texte et les concatène en un seul fort - il a déjà été discuté here. Cependant, je ne veux pas que la chaîne contienne un fichier si le fichier renvoie une erreur quand je l'exécute à travers une commande (comme une vérification VCS, par exemple). Voici ma tentative:Windows batch-file errorlevel question
set FILE_LIST=
for /f %%x in (temp.txt) do (
:: perform a VCS test
accurev diff -b %%x
:: skip concatenation if error level is > 2
IF errorlevel 2 GOTO NEXT
:: perform the concatenation
set FILE_LIST=!FILE_LIST! %%x
:NEXT
:: print a message if here due to an error above
IF errorlevel 2 echo VCS problem with this file: %%x
)
Le problème est - le script semble arrêter l'exécution de l'ensemble de la boucle dès qu'il en trouve un errorlevel supérieur à 2. S'il y a cinq fichiers dans la liste et le troisième a un problème VCS - le script ne gère que les deux premiers.
Il semble que le niveau d'erreur ne soit pas réinitialisé à chaque itération. Est-il possible de le réinitialiser manuellement à 0 à la fin de la boucle? –
mmyers: il semblerait que le [conseil des internets] (http://batcheero.blogspot.com/2007/07/never-set-errorlevel.html) est de ne jamais définir manuellement la variable errorlevel. – dls
ahh - Je vois le formatage de lien hypertexte ne fonctionne pas dans les commentaires. – dls