Windows-Batchdatei - Das System kann das angegebene Batch-Etikett nicht finden

Das Problem

Ich habe ein Problem mit einer DOS-Batchdatei und -Labels. Ich bekomme immer wieder diesen Fehler:

Das System kann das angegebene Chargenetikett nicht finden

Was ich versucht habeZwei Computer; ein WindowsXP und ein 2003 Server.Stellen Sie sicher, dass es als ASCII codiert wurdeDer Hex-Code für die Zeilenfortsetzungszeichen wurde geändert. Versucht, alle nacheinander durch CR, LF und CRLF zu ersetzen. Alle Kombinationen geben mir den gleichen Fehler.Versucht, zusätzliche Zeichen vor dem Etikett einzufügen, um das Etikett nach 512 Zeichen zu bringen.

Hier ist der 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

Hier ist das Hex mit 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

Hier ist die Ausgabe der Konsole (wenn ich @echo ausschalte):

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 . . .

Die 7zip-Datei wird nie erstellt, daher kann ich davon ausgehen, dass sie in dieser Zeile abstürzt.

7za a dependencies.7z "c:\temp\dir.txt"

Wenn ich diese Zeile von einer Eingabeaufforderung aus selbst ausführe, funktioniert sie einwandfrei und erstellt die Abhängigkeiten.7z. Ich denke also nicht, dass dies unbedingt ein Problem mit 7za.exe ist.

Ich habe diese Frage zum Stackoverflow bereits gelesen: stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-ex

und der Link von diesem Beitrag; help.wugnet.com/windows/system-find-batch-label-ftopict615555.html

Die Antwort

Also, ich habe das Problem gefunden, Leute.

Ich habe eine Technik verwendet, die ich normalerweise verwende und die ich eigentlich nur als "Proxy" -Batchdateien bezeichnen kann. Ich habe einen Ordner mit dem Namen c: \ scripts und ich habe dort mehrere bat-Dateien abgelegt, um häufig verwendete exes anzusprechen. Dadurch wird verhindert, dass meine PATH-Variable mit all meinen Befehlszeilentools absolut umfangreich wird. Auf diese Weise muss ich meinem PATH nur c: \ scripts hinzufügen und eine Proxy-Batch-Datei erstellen, wenn ich etwas benötige.

Ich hatte 7za.bat in c: \ scripts und enthielt nur dieses;

@echo off
"C:\Program Files\7-zip\7za.exe" %*

Ich habe mein Skript in dieses geändert.

SET zip="c:\program files\7-zip\7za.exe" a dependencies.7z

an Stelle von;

SET zip=7za a dependencies.7z

und es hat einwandfrei funktioniert.

Die Moral der Geschichte...

Vermeiden Sie es, andere Batch-Dateien aus einer Batch-Datei heraus aufzurufen. Wenn Sie dies tun, müssen Sie ihnen "voranstellen".Anruf".

Antworten auf die Frage(5)

Ihre Antwort auf die Frage