gpt4 book ai didi

Windows 批处理文件 - 系统找不到指定的批处理标签

转载 作者:可可西里 更新时间:2023-11-01 13:05:43 25 4
gpt4 key购买 nike

问题

我在使用 Windows 批处理文件和标签时遇到问题。我不断收到此错误:

The system cannot find the batch label specified

我尝试过的

  • 两台电脑; WindowsXP 和 2003 Server。
  • 确保它被编码为 ASCII
  • 编辑了续行字符的十六进制代码。尝试依次用 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 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 . . .

它实际上从未创建 7zip 文件,所以我想我可以假设它在这一行崩溃了;

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

如果我在命令提示符下单独运行该行,它可以正常工作并创建 dependencies.7z,所以我认为它不一定是 7za.exe 的问题。

我已经读过这个 stackoverflow 问题: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:\scripts 的文件夹,我在其中放置了几个 bat 文件来定位常用的 exe。这避免了我的 PATH 变量在我所有的命令行工具中变得非常庞大。这样我只需要将 c:\scripts 添加到我的 PATH,并在需要时创建一个代理批处理文件。

我在 c:\scripts 中有 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

它完美地工作。

故事的寓意...

避免从批处理文件中调用其他批处理文件。如果这样做,您需要在它们前面加上“调用”。

最佳答案

我要指出“测试 1.2.3...”和“按任意键继续...”行表示执行已成功转到 :dozip 标签,然后成功返回给调用者。

“7za”可执行文件实际上是一个批处理文件吗?如果我修改我的测试脚本让助手成为一个批处理文件,我会得到同样的错误。解决方法是执行“调用 %zip% %1”

关于Windows 批处理文件 - 系统找不到指定的批处理标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com