在Windows XP中运行批处理文件时,我发现了随机出现的错误消息:
系统找不到指定name_of_label的批处理标签
当然标签存在.是什么导致这个错误?
实际上,您需要2个条件才能实现:
批处理文件不得使用CRLF行结尾
您跳转到的标签必须跨越块边界(与and相反:end标签,它只是脚本末尾的快捷方式)
看到.系统找不到指定的批次标签和Batch-as-batch-can!
我以前遇到过同样的问题.但是,根本原因根本不是CRLF.这是因为在脚本中我执行了一个外部程序,如Ant,但没有放入CALL
Ant之前.因此,请确保CALL
批处理脚本中使用的每个外部程序.
这是问题以及如何解决它.问题是DOS批处理cmd程序中的错误或功能.首先是明确的问题陈述.如果您的DOS批处理文件包含目标标签,例如":dothis",并且在标签的末尾没有空格,那么如果行结尾是UNIX行结尾,则批处理文件将不起作用.这意味着您必须先在文件上运行unix2dos才能使用它.
根本原因是DOS命令行处理器(shell程序),将UNIX行尾字符作为标签的一部分.由于转到零件从不使用它作为标签,因此从未找到它,因为这样的标签确实不存在.解决方案是在每个目标标签的末尾添加一个额外的空间,甚至更好地在每一行.现在UNIX的行尾不会发挥作用,因为空间充当分隔符并且一切正常.
如果批处理文件具有unix行结尾(行分隔符),则有时会发生这种情况.
只是unix2dos它和问题应该解决.
您还应该确保在调用其他脚本时使用CALL,而不是在调用者的环境中调用它们.