问题标签 [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 投票
0 回答
41 浏览

batch-file - 延迟扩张需要帮助

我正在尝试制作一个 bat 文件,将我制作的自定义扩展文件中的标签本地化并获取输出,问题是由于显然没有办法在不启动本地环境的情况下增加 FOR 循环中的变量,我不能去做。

在一个名为这个的单独批处理文件中,“echo %_mmk% 什么也不返回。

0 投票
1 回答
61 浏览

windows - 在构建过程中,如何将我的程序集版本附加到文件夹的名称?

当我对我的应用程序进行发布构建时,我会将运行程序所需的所有文件复制到一个文件夹中。我希望该文件夹名称包含程序集版本。

我的构建命令部分有效。我可以将版本号放入一个名为 tmpfile 的文件中。问题似乎是将该文件中的版本号读取到变量中。

我已经测试了使用 CMD 窗口读取和写入 VER 的行,并且命令有效,fileversion 包含版本号。当我运行构建脚本时,fileversion 包含“Echo is on”,我认为这意味着 VER 是空白的。我的构建命令可能还有其他问题,但我被困在阅读版本号的这一点上。

0 投票
1 回答
295 浏览

windows - 批处理文件 - 根据变量中的字数创建一串数字

尝试创建一个批处理文件,该文件根据句子中的单词数创建一串数字。

我有一个包含不同数量单词的变量,例如: sentence="this is a sentence"

我需要生成的字符串是“1 2 3 4”,因为句子中有 4 个单词。

同样, sentence="this is a long sentence because Reasons" 会生成 "1 2 3 4 5 6 7"

我正在尝试这样的事情:

...继续将增加的计数变量附加到数字的末尾。因此,每次 FOR 循环运行时,它都会执行“1 2”、“1 2 3”、“1 2 3 4”等。

计数器工作正常,报告“计数器:7”但字符串只报告“结果数字字符串:1”

它没有将计数器添加到末尾......当我将它附加时,它会导致“1 7”而不是“1 2 3 4 5 6 7”

这与我是否使用 setlocal EnableDelayedExpansion 无关。

我在这里做错了什么?

(编辑:这个问题与在字符串末尾追加一个递增数字有关。正如我在原始问题中提到的,EnableDelayedExpansion 启用或禁用没有区别)

0 投票
0 回答
49 浏览

batch-file - 使用延迟扩展评估评估以使变量值可用作变量(来自外部批处理文件)

当我第一次开始尝试构建它时,作为一种保留 IP 地址变量的外部文件的方式,因此我只需要编辑一个列表,我觉得我做错了什么。但后来它奏效了。但是它也输出The system cannot find the drive specified在“IP”和“名称”之间。当我更改为,时,这停止了(代码已更新)::rem

我的目标是在此基础上进行大量自动部署和维护,例如调用 pscp/plink (PuTTY) 和写入日志文件,例如Deploying on [name] xxxx. 这是编写此代码的一种健壮/适当的方式吗?对我来说,它感觉出奇的干净。

我可以检查:正在使用!xxx!延迟扩展吗?如果是这样,您是否应该始终将变量包装起来以!进行延迟扩展?(我阅读了 Windows 批处理文件:什么是变量扩展,EnableDelayedExpansion 是什么意思?但我并不是 100% 清楚!这是导致这种情况的原因。)

这个叫什么?我是否使用变量值作为变量的名称,是否有一个计算机科学术语?是评估吗?

结果:

将IP阵列放入外部文件

所以继续编辑的代码(上面反映的编辑),我现在尝试将 IP 数组移动到一个外部文件中并调用它,它给出了Environment variable ips[ not defined

演示.bat:

info_IPs.bat:

0 投票
0 回答
253 浏览

arrays - 使用索引的迭代变量在for循环中回显批处理文件数组元素?

这个问题类似于使用变量作为索引的 Echo 批处理文件数组的问题? 但它没有回答我的问题。

我有一个包含列表的批处理文件。我正在遍历 for 循环,并希望使用迭代号(即list[i])在每次迭代时从列表中打印出一个元素

我正在使用 SETLOCAL enableextensions enabledelayedexpansion

我试过使用:

我知道我可以使用FOR /L,但这在我想使用它的上下文中不起作用。

这是我目前正在使用的代码

预期的:

实际的:

0 投票
0 回答
32 浏览

windows - 即使为真,批处理文件也会忽略 If 语句

在某个批处理文件的某个地方,我有一段代码可以检查目录是否存在。如果没有,请询​​问用户该怎么做。现在奇怪的是,当目录存在时,我仍然会收到“你想创建目录吗?”的问题。在 if 语句中。

我在这里想念什么?

编辑当我向If Existsthen 中添加 else 语句时,输出为:

Directory "W:\Windows\Panther" found

Directory "W:\Windows\Panther" not created so script cannot continue. The image deployment failed

Press the any key...

代码:

0 投票
2 回答
566 浏览

windows - 在批处理中在 endlocal 之后保留变量

我有一个文件夹结构,例如 C:\Temp\,有很多文件夹和文件,每个文件夹中都有一个“callme.bat”。我想创建一个所谓的 main.bat,它在主窗口中一个接一个地调用 callme 文件。但是有一个问题,在 callme 文件中有一些包含“!”的回声。标记对我来说是什么问题。

我意识到 setlocal-endlocal 组合的问题,因为批处理脚本想要解释“!”中的消息。标记,所以我必须使用 endlocal,但如果我这样做了,我将无法运行 callme bats。

callme.bat


main.bat 变体 1


main.bat 变体 2


main.bat 变体 3

所以我不知道该怎么办。有人有想法吗?

变体 1 的输出:

变体 2-3 的输出:

0 投票
3 回答
46 浏览

batch-file - 批处理 /f 遍历所有可用驱动器以搜索文件夹

我正在编写简单的脚本来检查可用驱动器中是否存在某个文件夹。但是,如果我只是回显 %%G,则在与 ":\somefolder" 连接时,%%G 总是显示空字符串,它会显示所有可用的驱动器。我是批处理脚本的新手,不确定我在这里缺少什么。

提前致谢。

0 投票
1 回答
107 浏览

batch-file - 字符串与批处理文件比较

一个非常简单的批处理文件。我正在尝试搜索不是 .txt 的文件扩展名。会有一个 .txt,但其余的会像 .txt_20190607。

我在该文件夹中有 .txt 文件和扩展名中包含额外日期信息的文件。我有什么问题?

0 投票
1 回答
189 浏览

batch-file - 如何使用批处理脚本将未清理的字符串复制到剪贴板

我想使用批处理将包含&符号的用户输入字符串放入剪贴板。我可以修改字符串,并且可以使用它打印到终端,setlocal EnableExtensions EnableDelayedExpansion
但我无法将它通过管道传输到剪贴板。

这里有一个深入的讨论,讨论了为什么管道会破坏东西,但我无法很好地理解它来解决我的问题。 https://www.robvanderwoude.com/battech_inputvalidation_setp.php

因为我要修改的字符串中包含“&username”,所以我得到的输出是:'username' 不是内部或外部命令、可运行程序或批处理文件。

如果只有 I echo !modified!,则没有错误。如何将任意未清理的字符串放入剪贴板?