问题标签 [delayedvariableexpansion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
32 浏览

batch-file - 存储在延迟变量中的变量名称 - 批处理

我有:

这输出ECHO OFF因为%!first!%返回为空。

如何打印“嘿”

更新和澄清:

这是我的完整代码,并评论了我正在尝试做的事情

而不是ECHO is off.我试图输出TRUE

0 投票
1 回答
372 浏览

windows - 批处理:IF 和延迟扩展

我有一个用于将 youtube 视频下载为 等的批处理文件。不过01-title1.m4a02-title2.m4a我无法让视频编号n正常工作。如果它是一个数字,我想在前面附加一个零,但我无法让它工作。

如果我将 toIF中的行更改FORIF %n%==%n:~0,1% SET n=0!n!,它确实有效,但是n在比较中只使用了初始值。然而,当我echo !n!==!n:~0,1!在 之前这样做时IF,我得到了1==12==2正如预期的那样。

0 投票
2 回答
239 浏览

windows - 具有延迟扩展的动态变量语法

为了重用代码,我尝试使用动态变量来测试条件,但无法获得所需的结果。我正在使用延迟扩展。

第 6 行将 SUB_TRANSTYPE 设置为 H

第 8 行将 H_HEADER 打印到控制台,但我希望它打印 FALSE(H_HEADER 的值)

我已经搞砸了转义字符,但无法让它工作。帮助!

0 投票
0 回答
303 浏览

windows - 使用批处理脚本循环延迟扩展

我有一个批处理脚本,它创建一些数组,以便在分区中存储一些关于磁盘空间的 WMI 数据,然后我想循环遍历这些数据。我试图利用延迟扩展的方式似乎存在一些问题。

首先,我为分区名称、可用空间和总空间创建了 3 个数组,如下所示:

这工作正常。但后来我尝试将其显示为 XML,使用循环遍历每个(%calcaddress%是指向计算器批处理文件的链接):

问题在于, 的值%l%似乎总是0在每次迭代中,所以它不起作用。我尝试将其更改为!dfm[!l!]!可能所有变体,但我无法正常工作。我也有ECHO offSETLOCAL EnableDelayedExpansion在文件的顶部。

0 投票
1 回答
100 浏览

batch-file - 如何将感叹号传递给批处理脚本中的调用标签例程并且延迟扩展已打开?

我读过这篇文章,这在大多数情况下都有帮助,而这篇文章似乎是重复的,但我无法让它工作。

免责声明:禁用/启用延迟扩展是一种解决方法,但这很烦人,除非可以禁用整个脚本。我很好奇是否有更直接的方法。

我使用这个非常简单的 colorEcho脚本,有时我只想打印一个感叹号。正如该帖子所示(但未能解决),它不打印感叹号。

复制:

给出:

在此处输入图像描述

我试过了:

  • call :colorEcho 0A "Ex^!"和变种^^^!
  • 首先set excl=^^!然后CALL :colorEcho "Foo!excl!"
  • 一些具有更多/更少转义的变体
  • 创建了一个没有 的简化例程colorEcho,但遇到了同样的问题:

    /li>

也许这是不可能的,我要么不想输出感叹号,要么我应该使用已经提到的DisableDelayedExpansion. 有任何想法吗?

0 投票
1 回答
122 浏览

string - 对延迟扩展字符串变量的操作失败

我正在尝试从 XML 文件中查找特定行并使用字符串操作操作提取值。

下面是我正在尝试的代码。

输出是:

我实际上想要这个值c:\temp\file1

有人请帮我更正代码或请提出任何其他更简单的方法。

0 投票
1 回答
167 浏览

batch-file - 具有嵌套扩展的批处理脚本不起作用

我正在尝试使用嵌套变量扩展的结果设置变量。month是一组月份名称,从 January (01) 到 December (12)。monthNow保存当前月份的代码(例如,01)。这是我的代码:

这个存储在monthName中的结果应该是一月。但是,它实际上是在返回“ECHO 已关闭”。我找到了一个包含很好信息的 SO 页面,但是这些建议不起作用。也许我错过了什么?这是该页面:为什么在这种情况下批处理文件中的延迟扩展不起作用?

编辑:

添加了其余代码。我最初没有添加它,因为我将代码从set newName...移动命令开始和结束都保留在其原始形式(可能不正确)中,直到我成功打印了月份名称。我不仅得到“ECHO 已关闭”。消息,但其他命令中的变量都没有工作,我想如果我解决了一个问题,我可以解决剩下的问题。但现在你拥有了一切!

@statosdotcom 的编辑 2:

注释掉第一行后的控制台输出:

为@magoo 编辑 3:

set mon添加上面set monthName=...并注释掉 ECHO 语句后的控制台输出:

0 投票
1 回答
506 浏览

batch-file - 未在批处理文件中设置变量

这里 abc 总是显示空白。可能的原因是什么?

0 投票
1 回答
804 浏览

batch-file - .bat 文件中嵌套 if 中 %errorlevel% 的错误值

我已经编写了一个.bat文件来首先运行一个程序,如果它正确完成,我运行另一个程序并检查它的返回值。

但是第二个%ERRORLEVEL%总是等于第一个,它没有设置为的返回值second-program.exe

0 投票
1 回答
90 浏览

batch-file - 为什么 FOR 在 IN 之后会因延迟子字符串扩展而失败?

当使用立即扩展(写入而不是批处理文件)时,子字符串扩展在for循环集中(即后面的括号部分)起作用:in%%I%I

但是,当应用延迟扩展时,它会失败:

我希望输出是:

但相反的是:

为什么会这样,我该如何防止呢?

我知道我可以通过引用 set 和 using 来解决这个~问题,但这不是我想要的:

以下命令行也失败:

意外的输出是:

使用,和开关for的命令行也会因此类子字符串语法而失败。/R/L/R

它肯定与,and是, ,等=的标记分隔符这一事实有关。cmdSPACETAB;