web-dev-qa-db-fra.com

Le fichier batch cesse de s'exécuter après la première commande

J'utilise l'outil 'HTML Match' pour comparer deux fichiers HTML. Comme je dois comparer beaucoup de fichiers, je crée un fichier de commandes comme le suivant. Par exemple, je ne donne que cinq ensembles de fichiers.

cd "C:\Program Files\HTML Match"
HTMLMATCH.EXE "D:\Raj\compare1\a1.html" "D:\Raj\compare2\a1.html" "D:\Raj\compare_res\a1.html"
HTMLMATCH.EXE "D:\Raj\compare1\a2.html" "D:\Raj\compare2\a2.html" "D:\Raj\compare_res\a2.html"
HTMLMATCH.EXE "D:\Raj\compare1\a3.html" "D:\Raj\compare2\a3.html" "D:\Raj\compare_res\a3.html"
HTMLMATCH.EXE "D:\Raj\compare1\a4.html" "D:\Raj\compare2\a4.html" "D:\Raj\compare_res\a4.html"
HTMLMATCH.EXE "D:\Raj\compare1\a5.html" "D:\Raj\compare2\a5.html" "D:\Raj\compare_res\a5.html"

Lorsque j'exécute ce fichier de commandes dans une invite cmd, seule la première ligne, c'est-à-dire 'a1.html', est comparée et produit un résultat. Puis l'exécution s'arrête.

59
rajashekar

Ajoutez call devant les commandes que vous exécutez.

Vous pouvez aussi changer ceci en une boucle for, donc:

FOR /L %i in (1,1,5) DO CALL HTMLMATCH.EXE D:\Raj\compare%i%\a%i%.html D:\Raj\compare%i%\a%i%.html D:\Raj\compare_res\a%i%.html
99
Ben

La solution à votre problème consiste à écrire CALL HTMLMATCH.EXE (et le reste des paramètres) . Utilisez simplement CALL devant chaque commande exécutable du fichier de commandes.

44
BJoe

Il n'est pas nécessaire d'insérer des guillemets sans espace entre eux. 

Essayez ça:

HTMLMATCH.EXE D:\Raj\compare1\a1.html D:\Raj\compare2\a1.html D:\Raj\compare_res\a1.html

Peut-être que cela résoudra votre problème. 

0
Adrian K.

Je cherchais quelque chose de vraiment similaire et j'ai essayé, je pense, toutes les réponses, mais j'ai finalement trouvé la solution à mon problème! 

Dans mon script, je veux vérifier si un processus est en cours d'exécution, sinon, démarrez-le (un fichier .exe), puis vérifiez si un autre processus est en cours d'exécution. Sinon, démarrez-le aussi (mais laissez tous les programmes ouverts) et le problème est que le premier fichier .exe a été démarré mais ne passe pas au second car il attendait la fin du processus. Cela fonctionne enfin pour moi avec start et la magie vient avec ...

/séparé

cela fonctionne pour moi comme: 

start "program1" /separate program1.exe
other commands

Avant que cela s'arrête après le démarrage du programme1 parce qu'il attendait sa fermeture, je pense, mais cela n'allait pas se produire, car je voulais le laisser ouvert. Maintenant, avec le début/séparé, il continue avec les autres commandes. 

Je l'ai trouvé dans un autre forum mais le fait est que c'est le manuel,/separ est utilisé pour démarrer dans un autre espace mémoire. 

0
testfailed