问题标签 [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 回答
43 浏览

windows - 在批处理脚本中自动创建文件夹树的语句结构

我正在尝试自动化我的文件夹树创建,在那里我请求用户年份(可能不止一个),然后我在年份文件夹中创建从 01 到 12(1 月到 12 月)的文件夹。在每个月的文件夹中,我可以根据需要创建另一个文件夹,以保持组织。

当我在 Windows 环境中运行 .bat 脚本时,我收到命令语法错误,但是查看了整个脚本,但我找不到错误在哪里。我觉得我想做的事情并没有那么难,所以我把整个脚本放在下面,想象一下,有了读写脚本的基本知识,社区的你就可以理解我想做的事情。

在这种情况下,用户必须将脚本直接放在他想要创建所有新文件夹的文件夹中并运行。为此,一开始将脚本所在的路径存储在变量 curpath 中。

0 投票
2 回答
49 浏览

batch-file - 使用移位在for循环内批量解析传入参数

我正在尝试编写“引导程序”脚本来解析并将参数传递到我框架中的其他应用程序中。下面这个最小的、可重现的例子,实际应用要复杂得多

该脚本的基本语法是

它应该调用

有问题的片段是这个嵌套的 for 循环:

问题是arguments等于1 1 1而不是1 test2 true在执行此循环之后。

我相信内部循环预先填充了%~3设置为foo=1并忽略了 shift 命令。我无法更改shift,因为我需要支持 9 个以上的参数,也无法删除外循环(出于其他原因)。

问题是 - 我可以延迟扩展脚本参数吗?

0 投票
1 回答
40 浏览

arrays - 批处理文件问题:如何将文件(带有感叹号)中的文本表加载到全局数组中?

我的目标是将文本文件加载到全局数组中,并且该文件包含感叹号。然后我想对数组进行冒泡排序,并将内容保存到一个新文件中。不幸的是,我什至无法将数据加载到数组中。我尝试使用 for 循环,但似乎既需要也不需要延迟扩展。当然,由于 setlocal 命令,在循环中生成的任何变量都是局部变量,对吗?因此,一旦达到 endlocal(为了切换延迟扩展),范围就消失了。我在想我需要数组是全局的,以便以后可以继续操作它。(我试图在 endlocal 的末尾添加 set 命令以将本地值传递到更高的范围,但我的尝试无济于事。)

输入文件如下所示:

我的最终目标是在表单中创建一个文件

按数值排序后。如果有人可以帮助完成第一部分(将数据加载到数组中),那将不胜感激。

0 投票
1 回答
28 浏览

batch-file - 修复批处理脚本以处理 if 块内的右括号

我有一个批处理脚本可以在不同的环境下运行不同的 PHP 版本。

问题是它在第一个未转义的右括号上中断,因为它与IF "%ANSICON%" == "" (.

根据我阅读的其他问题,该行setlocal EnableExtensions EnableDelayedExpansion是新的,但它根本没有改变行为。

如何%*在不先批量解释的情况下将所有内容传递给 PHP?

此批处理文件表现出相同的行为:

0 投票
1 回答
2223 浏览

powershell - 如何在 cmd /c 中设置 %ERRORLEVEL%?

我希望能够将%ERRORLEVEL%环境变量(也称为“系统变量”)设置为在PowerShell中运行的命令提示符脚本(即)开头的任意值。每当人们想要设置(1)时,他们都会执行以下操作:cmd /c%ERRORLEVEL%

但是,虽然在正常命令提示符中运行上述命令时%ERRORLEVEL%设置为,但如果在 PowerShell 中执行这些确切的行,则退出代码环境变量设置为并保持为. 此外,您不能执行以下操作:330

exit命令完全脱离了命令执行(即cmd /c),并且在运行之后没有其他命令&

因此,我尝试在 PowerShell 中执行以下命令:

预期的输出是4,但这总是输出0。我无法弄清楚为什么我无法SET使用%ERRORLEVEL%环境变量。我使用了延迟命令执行(这里的例子),但这里似乎没有多少摆弄。

有谁知道为什么该命令SET %ERRORLEVEL% = 4不起作用?

如果您无法SET使用环境变量,那么如何在上面用与号 ( ) 分隔的命令字符串中设置任意%ERRORLEVEL%&

0 投票
1 回答
122 浏览

windows - Windows 批处理脚本:尝试通过使用管道循环命令结果来提取 Java 版本

我想在我的机器上提取 Java 版本。
1/ 我安装了 Oracle Java 8,命令where java输出如下:

2/ 命令java -version输出:

3/ 命令java -version 2>&1 | find "version"输出:

所以我想做与批处理文件中的最后一个命令完全相同的事情。因此,在批处理文件中,我有类似于步骤 2 的代码:

但是,一旦我将函数修改为:echo_java相当于第 3 步,如下所示:

我收到此错误:

我想这里发生了一些不好的转义,但我真的看不出有什么问题。

0 投票
1 回答
47 浏览

batch-file - 如何在包含很长字符串的 .BAT 变量中找到特定的字母字符串?

试图仅隔离 .BAT 变量中包含的字符串的一部分。

字符串变量!原始!包含以下内容:

我正在尝试将其解析为单词“ Name= ”之后的字符序列。

以下 For 循环返回:系统找不到文件 v2.30|Action。

我究竟做错了什么?为什么它只读取!Original的前一小部分内容!?

赞赏...

0 投票
1 回答
479 浏览

windows - 在启用延迟扩展时将带有特殊字符的参数传递给批处理脚本

我需要调用一个接受密码作为其参数之一的脚本。每当密码包含,时,它都被视为分隔符,密码将被分成两个参数,当它包含!所有特殊字符时,将被省略。我尝试将它们包含在 中 '"并预处理密码以同时使用^和进行转义^^。不幸的是,没有任何效果。如何在密码中保留这些特殊字符?

0 投票
2 回答
48 浏览

windows - Windows CMD 批处理脚本 - 如何避免剪切标记“!” 在循环

我有 XML 文件 myConfig.xml。

我需要在 CMD 中的批处理脚本中更改 .

输出 - NEW_myConfig.xml

installpath 中的更改值已正确更改但 myPassword 剪切字符“!”中的值。如何让它不削减我的标记“!”

0 投票
0 回答
205 浏览

windows - 批处理文件setlocal混淆

我很难理解批处理文件本地化的工作原理。这是一个例子来证明我的困惑

这会打印,5 6 6 5 如果我删除 IF 语句,它会打印,6 6 6 5 真是一团糟!为什么会这样?在 Linux bash 文件中,我确切地知道会发生什么,但在这里不知道。请向我解释每个打印语句中发生了什么,以及最好的方法是为在 IF 块中修改的变量编码。

我不得不使用 setlocal 来解决另一个问题

5 6尽管我的期望是这个打印6 6。然后我了解了 setlocal 来解决这个问题,这现在是另一个令人头疼的问题。