Windows fichier de commandes - Le système ne trouve pas le lot de l'étiquette spécifiée
Le Problème
Je vais avoir un problème avec un fichier batch DOS et labels.
Je reçois cette erreur:
Le système ne trouve pas le lot de l'étiquette
spécifié
Ce que j'ai essayé
- Deux ordinateurs, un WindowsXP et un Serveur 2003.
- Fait en sorte qu'il a été codé en ASCII
- Editted le code hex de la ligne de caractères de suite. Essayé de les remplacer tous avec CR , LF, et CRLF à son tour. Toutes les combinaisons de me donner la même erreur.
- Essayé d'insérer des caractères supplémentaires à l'avant de l'étiquette pour faire l'étiquette passé de 512 caractères.
Voici le code:
cls
@echo off
SET zip=7za a dependencies.7z
call:dozip "c:\temp\dir.txt"
pause
goto exit
:dozip
echo Testing 1.2.3...
%zip% %1
goto:eof
:exit
Voici l'hexagone avec CRLF (0d 0a).
63 6c 73 0d 0a 53 45 54 20 7a 69 70 3d 37 7a 61 20 61 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e 37 7a 0d 0a 63 61 6c 6c 3a 64 6f 7a 69 70 20 22 63 3a 5c 74 65 6d 70 5c 64 69 72 2e 74 78 74 22 0d 0a 0d 0a 70 61 75 73 65 0d 0a 67 6f 74 6f 20 65 78 69 74 0d 0a 0d 0a 3a 64 6f 7a 69 70 0d 0a 20 20 65 63 68 6f 20 54 65 73 74 69 6e 67 20 31 2e 32 2e 33 2e 2e 2e 0d 0a 20 20 25 7a 69 70 25 20 25 31 0d 0a 67 6f 74 6f 3a 65 6f 66 0d 0a 3a 65 78 69 74
Voici la console de sortie (quand j'enlève le @echo off):
C:\>SET zip=7za a dependencies.7z
C:\>call:dozip "c:\temp\dir.txt"
C:\>echo Testing 1.2.3...
Testing 1.2.3...
C:\>7za a dependencies.7z "c:\temp\dir.txt"
The system cannot find the batch label specified - dozip
C:\>pause
Press any key to continue . . .
Il n'a jamais vraiment crée l'7zip fichier, donc je pense que je peux supposer que sa s'écraser sur cette ligne;
7za a dependencies.7z "c:\temp\dir.txt"
Si je lance cette ligne par lui-même à partir d'une invite de commande, il fonctionne très bien et crée les dépendances.7z, donc je ne pense pas que ses nécessairement un problème avec 7za.exe.
J'ai déjà lu ce stackoverflow question:
stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-ex
et le lien de ce poste;
help.wugnet.com/windows/system-find-batch-label-ftopict615555.html
La Réponse
Donc, j'ai trouvé le problème les gars.
J'ai été en utilisant une technique que j'ai utiliser fréquemment que je ne pouvais le décrire comme "proxy" des fichiers batch. J'ai un dossier appelé c:\scripts et j'ai mis plusieurs fichiers bat pour cible couramment utilisés exe. Cela permet d'économiser ma variable PATH de devenir absolument énorme avec tous mes outils de ligne de commande. De cette façon, j'ai seulement besoin d'ajouter c:\scripts sur mon CHEMIN, et de créer un proxy fichier de commandes quand j'ai besoin de quelque chose.
J'avais 7za.chauve-souris dans c:\scripts contenant seulement cela;
@echo off
"C:\Program Files-zipza.exe" %*
J'ai modifié mon script pour cette;
SET zip="c:\program files-zipza.exe" a dependencies.7z
au lieu de cela,
SET zip=7za a dependencies.7z
et cela a fonctionné parfaitement.
La morale de l'histoire...
Éviter d'appeler d'autres fichiers de commandes depuis un fichier de commandes. Si vous le faites, vous aurez besoin de les préfixer avec "appel".
Fonctionne très bien sur mon XP boîte aswell en utilisant le bloc-notes et le codage ANSI
Probablement pas pertinent, mais quel est le nom de ce fichier batch?
Il a été à l'origine appelé 7z.chauve-souris, j'ai essayé de test.chauve-souris, 7z111.chauve-souris... même message d'erreur
Oui, que serait-il le faire. Dans mon lot de fichiers que je mets toujours le nom complet du fichier, par exemple
7za.exe
ou call helper.bat
. (Notez que de cette façon, tout se terminant dans .bat
sera évident.)OriginalL'auteur csauve | 2009-10-05
Vous devez vous connecter pour publier un commentaire.
Je tiens à souligner que le "Test 1.2.3..." et "Appuyez sur n'importe quelle touche pour continuer . . ." les lignes indiquent que l'exécution a passés avec succès à l' :dozip étiquette, puis a renvoyé à l'appelant.
Est le "7za" exécutable en fait un fichier batch? Si je modifier mon script de test pour avoir de l'aide soit d'un fichier de commandes, j'obtiens la même erreur. La solution est de faire appel %zip% %1'
Avez-vous un 7za.chauve-souris dans votre %path%? De toute façon, essayez de changer le "%zip% %1" ligne "d'appeler %zip% %1".
Merci Andrew, oui, 7za.chauve-souris a été dans mon chemin, le problème est que j'ai été en utilisant 7za.chauve-souris à tous. Voir ma "réponse" de la section dans mon post.
Oh.. regarde comme parent effectivement répondu... je suis bête
OriginalL'auteur Andrew Medico
la morale de l'histoire: lors d'un appel externe des programmes/fichiers de commandes dans un fichier de commandes, utilisez l'appel
et/ou
(Appel d'un lot à partir d'un autre qui a été fait depuis l'époque de DOS, n'oubliez pas d'appel)
OriginalL'auteur Anders
Une possibilité, bien que cela semble peu probable, est que les extensions de commandes ne sont pas activés, ou jusqu'à date, ce qui interfère avec l'appel/goto/étiquette de comportement.
Essayer:
et si c'est moins de
[2]
(ou vide -[]
) puis vérifiez pour voir sicmd.exe
est invoquée avec/e:off
, ou tout simplement courirdans la fenêtre de la console où vous exécutez ce fichier de commandes.
OriginalL'auteur system PAUSE
Êtes-vous à l'aide de Windows NT 4/Windows 2000? Seulement, tu peux les utiliser, APPEL de sous-programmes dans le même fichier de commandes.
OriginalL'auteur Jacob
Regardant de plus près à votre hexadécimal, il n'a pas en fait tous les CRLF (
0d 0a
). Plusieurs lignes à la fin de LF (0a
sans précédent0d
).Vérifier dans votre éditeur hexadécimal pour assurez-vous chaque
0a
est précédée par0d
(exactement).Ou tout simplement couper et coller votre fichier dans un bloc-notes vide document et les ré-enregistrer.
J'ai refait, double et triple vérification de mes CRLF. Ne fonctionne toujours pas. 63 6c 73 0d 0a 53 45 54 20 7a 69 70 3d 37 7a 61 20 61 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e 37 7a 0a 0d 63 61 6c 6c 3a 64 6f 7a 69 70 20 22 63 3a 5c 74 65 6d 70 5c 64 69 72 2e 74 78 74 22 0d 0a 0d 0a 70 61 75 73 65 0d 0a 67 6f 74 6f 20 65 78 69 74 0d 0a 0d 0a 3a 64 6f 7a 69 70 0d 0a 20 20 65 63 68 6f 20 54 65 73 74 69 6e 67 20 31 32 2e 2e 33 2e 2e 2e 0d 0a 20 20 25 7a 69 70 25 20 25 31 0d 0a 67 6f 74 6f 3a 65 6f 66 0d 0a 3a 65 78 69 74
OriginalL'auteur system PAUSE