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

batch-file - 使用批处理文件从字符串(文件名)中提取特定部分

我正在尝试提取当前目录中所有文件名(pdf 文件)的一部分。

文件名的长度会有所不同,但最后一部分(日期时间和扩展名)始终为 16 个字符。其余部分将始终具有不同的长度。即使是我需要的部分也可能有不同的长度。

我尝试使用这里获得的 lastIndexOf 函数。

文件名 例如:academyo-nonpo- 2582365 -082416051750.pdf

我想提取粗体部分。我首先尝试修剪最后 17 个字符(这部分将始终具有固定长度。)然后尝试获取“-”的最后一个索引(因为第一个部分可以具有可变字符长度。)并修剪字符直到该位置,它应该返回文件名的所需部分。

作为第三个参数传递给函数的变量的引用似乎没有返回所需的值。我不知道这里有什么问题。

0 投票
2 回答
84 浏览

string - 使用 Windows cmd 中的 set 循环遍历字符串值

我的 Windows 批处理文件应该读取文件名并创建一个根据文件名的第 2 到第 5 个字母命名的目录:

'string' 的值并没有更新,即在循环的每个步骤中它都是相同的。我怎样才能更新它?

这是 cmd 输出:

0 投票
1 回答
143 浏览

batch-file - 延迟扩展错误

我正在玩批处理文件和延迟扩展。
我只是试图打印目录中所有项目的文件/文件夹名称。

当我这样做时,我会收到错误:

此命令的语法不正确

我唯一能想到的是我错误地使用了延迟扩展。

0 投票
1 回答
3010 浏览

windows - 批处理脚本 - 如果尚未设置/定义,则设置/定义环境变量

我需要一个批处理脚本来调用

从另一个脚本或命令行。

我绝不是 Windows 批处理脚本方面的专家,而是通过反复试验并将不同的东西拼凑在一起,到目前为止,我已经想出了这个:

调用时,执行我需要的操作:

在这里寻求更好/最佳的解决方案。这个在我看来确实很丑。

0 投票
2 回答
70 浏览

batch-file - 重新定义与另一个变量一起定义的变量的值

我目前正在使用“jeb”中的这种方法来处理许多变量。 BAT 文件:变量内容作为另一个变量的一部分

效果很好。问题是我需要再次设置一些变量的值。我所有的尝试都惨遭失败。

0 投票
2 回答
1598 浏览

batch-file - 如何在批处理文件中使用数组?

我正在尝试重命名 PC 上的 NIC 名称。它有很多 NIC(它们是虚拟的)。我可以像这样得到他们的名字

我想在该循环中使用 netsh 来重命名它们。不幸的是,目标名称不是简单的递增数字。所以我做了

这输出

但如果我尝试

我只是得到垃圾输出。有什么方法可以将前面示例中生成的字符串评估为变量?然后我可以将它传递给 netsh 进行重命名。

0 投票
1 回答
501 浏览

batch-file - bat 文件 enabledelayedexpansion 不会在 IF 语句中展开

当我尝试在 .BAT 文件 IF 语句中使用 : 子句延迟扩展环境变量时,该行无法解析/执行。使用 % 符号代替 ! 用于扩建工程。相同的延迟扩展适用于其他地方,例如 ECHO 语句。例如:

回声 !t:~0,2 ! 正确产生:ab

if %t:~0,2% == ab echo equal正确产生:等于

if !t:~0,2 ! == ab echo equal发出错误: 2!这时候出乎意料

我不明白为什么我不能在 IF 语句中使用带有 : 子句的延迟扩展。如果没有冒号子句,IF 语句中的延迟扩展可以正常工作。

0 投票
1 回答
33 浏览

windows - 从运行时生成的变量名展开环境变量

我创建了一个批处理文件,它根据我传递给它的编译器名称来更改 PATH。我还想在运行时从这些变量中进行选择,我有另一个批处理文件,我在其中生成要查看的适当环境变量的名称,但我看不到如何扩展生成的变量

例如

因此,当调用批处理文件时,环境变量 _1 和 PLATFORM 展开以生成我要展开的变量名称的命名约定部分

如果我调用echo EXE_PATH_%_1%_%PLATFORM%它会产生我想要扩展的变量的名称

如何从生成的名称转到具有该名称的环境变量的内容?

我怀疑需要延迟支出,但我不确定

0 投票
1 回答
905 浏览

windows - 修改 for 循环以不在批处理脚本中使用延迟扩展

在我努力理解for..do循环语法及其对%%变量的使用中。我已经经历了 2 个特定的示例/实现,其中一个for循环不使用DELAYEDEXPANSION,另一个循环DELAYEDEXPANSION使用!符号。第一个 for 循环似乎与 Windows XP 等较旧的操作系统兼容,而第二个 for 循环示例则不兼容。

具体来说,第一个 for 循环示例取自此答案(与相关),第二个 for 循环示例取自此答案

下面复制的两个示例的修改代码:

第一个 for 循环

第二个for循环

由于我一直在阅读并看到延迟扩展(或!符号)与旧操作系统(例如 Windows XP)不兼容的问题,我想看看如何编写第二个循环,就像第一个循环一样;即不使用DELAYEDEXPANSION.

0 投票
3 回答
226 浏览

powershell - “!”问题的解决方法 具有延迟变量扩展的 For 循环中的文字

如何为 FOR 循环制定解决方法?问题是延迟扩展对于带有“!”的文件名失败。在他们中

代码(这是更大脚本的一部分)

如果无法批量执行,我该如何在 PowerShell 中执行原始批处理可以调用​​的操作,例如:

编辑: CALL SET 修复了原始代码,完全避免了 DelayedExpansion