问题
我有一个DOS批处理文件和标签有问题。 我不断收到此错误:
该系统找不到指定的批次标签
我已经试过
- 两台电脑; 在windowsXP和2003服务器。
- 确定它被编码为ASCII
- Editted为续行字符的十六进制代码。 依次尝试与CR,LF和CRLF替换所有。 所有组合给我同样的错误。
- 试图在标签之前插入额外的字符,以使标签过去512个字符。
下面是代码:
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
下面是用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
这里是控制台输出(当我删除@echo关闭):
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 . . .
它从来没有真正创建7zip的文件,所以我想我可以假设它的崩溃在这条线;
7za a dependencies.7z "c:\temp\dir.txt"
如果我运行本身从命令提示符那行,它工作正常,并创建dependencies.7z,所以我不认为它一定有问题7za.exe。
我已经读过这个计算器的问题:stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-ex
并从该职位的联系; help.wugnet.com/windows/system-find-batch-label-ftopict615555.html
答案
所以,我发现这个问题的家伙。
我使用的是技术,我通常使用,我只能真的形容为“代理”的批处理文件。 我有一个文件夹名为C:\脚本,我把几个.bat文件中有瞄准常用EXE文件。 这成为我所有的命令行工具绝对大规模节省我的PATH变量。 这样,我只需要添加C:\脚本来我的道路,并创建一个代理的批处理文件,当我需要的东西。
我在C 7za.bat有:\脚本,只包含这一点;
@echo off
"C:\Program Files\7-zip\7za.exe" %*
我改变了我的剧本到这一点;
SET zip="c:\program files\7-zip\7za.exe" a dependencies.7z
代替这一点;
SET zip=7za a dependencies.7z
和它的工作完美无缺。
这个故事的主旨...
避免在批处理文件中调用其他批处理文件。 如果你这样做,你将需要与“ 呼 ”的前缀他们。