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 pour moi sur le Serveur 2003. Tapé dans l'utilisation de notepad.exe, enregistré avec le codage ANSI, et courut de cmd.exe.
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