繁体   English   中英

在Batch中显示变量的问题

[英]Issue displaying variables in Batch

我试图在批处理中显示变量列表,但是我没有得到变量。 我得到了命令,但删除了%和空格。

echo 1 %11A1% %11B1% %11C1% %11D1% %11E1% %11F1% %11G1% %11H1% %11I1% %11J1%

变成

1 1A111B111C111D111E111F111G111H111I111J1

我已经在其他批次中完成了变量并且没有问题地显示它们。 任何帮助表示赞赏!

目前的代码在这里: http//hastebin.com/sutasipiju.dos

您的变量命名有问题。 当它们以数字开头时,变量名称中带有百分号的fisrt字符被视为参数。 因此, %11A1% (以及其他变量)将被转换为%1 1A1 ...

从命令行,这没有问题,因为没有参数替换,但在批处理文件中,以数字开头的变量会产生这种问题。

有两种解决方案。

  • 将所有变量重命名为不以数字开头的变量
  • 启用延迟扩展('setlocal enabledelayedexpansion')并将sintax从%11A1%更改为!11A1!

第一个选项可能更好,因为更简单,可以产生更少的问题,但两者都可以使它工作

问题在于你的变量名,它不应该以数字开头。

当批次看到echo %11A1%...

它替换了%1的第一个命令行参数,因此,假设您没有提供任何参数,这将成为

[nothing]1A1...

解决方案:使用其他角色启动变量。 “A..Z”是传统的。 如果你想成为一个有点异国情调,那么$#似乎是明显的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM