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

java - 如何使用批处理文件中的变量查找和替换 %PATH% 系统变量中的字符串?

我正在尝试使用批处理文件升级 Java,我需要更改 PATH 系统变量以反映该更改。在 PATH 变量的开头我有

我需要将jdk值更改为jdk1.8.0_60。我对命令行和批处理文件比较陌生,所以我可能会误解一些东西。这是我正在尝试的。

我有几个变量

我发现了一些关于用文字值替换字符串的方法

但我不能让它与变量一起工作......

我不知道你是否需要 2%'s 在外面,或者只需要一个,或者!'s。我对延迟扩张的知识不是很有信心。我也不知道这是否可能。

作为奖励,我真的希望能够采用 ...\Java\ 之后的任何内容并将其替换为我的新值。这是以防万一我不知道 jdk 的 PATH 变量中的值

谢谢!

编辑:通过call在我的代码的修改版本之前使用命令,我能够让它工作

我仍在试图弄清楚如何使其通用并改变...\jdk我所拥有的价值观。

0 投票
1 回答
256 浏览

batch-file - 失踪 ”!” EnableDelayedExpansion 时的字符串

当我在脚本中启用 DelayedExpansion 时,它不会回显文件名中的“ ”字符串。例如:

原始
File01-TEXT!.txt


显 File01-TEXT.txt

我想这是因为setlocal EnableDelayedExpansion,但我无法删除,因为我需要它。

0 投票
2 回答
69 浏览

batch-file - 为什么循环没有按预期运行?

我有像E:\Backups\code\Hazard\test1...这样的文件夹testn

在这些测试文件夹中,类似E:\Backups\code\Hazard\test1\it0...itn

根文件夹是E:\Backups\code代码运行的地方。

以下代码在每个子文件夹上运行,并summary.ymlit0文件夹复制到最新it(n)文件夹。

为什么代码仅针对test1文件夹运行然后挂起?

0 投票
1 回答
108 浏览

batch-file - 未设置变量

这是为什么循环没有按预期运行的代码的扩展?

最终我想从 Report.txt 中读取值(一个逗号分隔的文件,在一行中具有像 1,2,3,4 这样的值)并在 summary.yml 的某些字段中更新这些值(...field10 : var1, field11 :var2,... field25 :var3..) 等。为此,我试图存储 Report.txt 中的值,但未设置变量。任何帮助将不胜感激

0 投票
2 回答
180 浏览

batch-file - 如何使用延迟扩展来处理批处理脚本中的值

我在读取批处理脚本中的 CSV 文件内容时遇到问题。我有一系列文件说My_A_File.csv, My_B_File.csv ... My_Z_File.csv。我面临的问题是读取其中的特殊字符。因此,想要读取延迟扩展关闭的值。

当我用 disabledelayedexpansion 读取块中的值时,它们是空的!我该如何处理?

脚本:

输出:

0 投票
1 回答
241 浏览

batch-file - If statement being ignored when using delayed expansion

I have a batch file that takes two, renames the first file with one name and the second file another name. A variable is set to Y and then delayed expansion is used on the variable in an if statement. The code reads in the two files form the SOURCE location and places the SOURCE location and the file names in a txt file. So the file will look like this: \servername\Reports\531627.REPORT.CSV \servername\Reports\531638.REPORT.CSV The code then loops through the text file, copies and then renames the first file to REPORTLST and then the second on to REPORTAST. What's happening thought is it's like the if statement is being ignored. I've printed out the FIRSTFILE variable to confirm that it is Y and it is but the first file is never copied and renamed. Here is the code:

And here is what is printed out:

So you can see that it's always going into the ELSE but I can't see what the issue is. Any ideas?

0 投票
2 回答
212 浏览

batch-file - 批量字符串索引和延迟扩展

我已将有问题的代码剥离到有问题的行。为什么第一个回声有效而第二个无效?

编辑:我一直在尝试,这条线有效:

现在的问题是:有人可以向我解释为什么我必须使用电话吗?

0 投票
2 回答
197 浏览

json - 为 JSON 格式化批处理删除不需要的逗号

我正在尝试以 JSON 格式打印出补丁列表,如下所示:

然而,这就是我得到的:

这是我的代码

在我的第一个for循环中,我将数组补丁设置为从命令输出接收到的每个补丁。之后,我试图读取数组中的每个元素并按顺序打印它们。

* 这里它确实正确打印了第一个元素。但是当我用

它给了我一个空变量。

如何在另一个变量中传递一个变量?

0 投票
1 回答
1080 浏览

batch-file - 替换字符串中需要转义感叹号,但搜索字符串中不需要(延迟扩展的子字符串替换)?

假设在启用延迟扩展的情况下,想要使用子字符串替换语法用感叹号替换某些子字符串,他们必须使用立即(正常)扩展,因为解析器无法区分扩展的 s 和文字的扩展。!

但是,为什么必须在替换字符串中转义感叹号?为什么搜索字符串中的感叹号被转义时没有必要甚至破坏性?

以下脚本将!字符串中的 s 替换为 s`并以相反的顺序替换,因此我希望结果等于初始字符串(当然,它本身不能包含任何反引号):

这个结果肯定不是我想要的,最后一个字符串不一样:

只要走线...:

....并在那里替换!^!因此在替换字符串中转义感叹号,结果正是我所期望的:

但是,当我尝试其他转义组合时(在替换和搜索字符串中转义感叹号,或仅在后者中转义),结果再次是上述不需要的。

我浏览了这篇文章Windows 命令解释器 (CMD.EXE) 如何解析脚本?但我找不到这种行为的解释,因为我知道正常(或立即,百分比)扩展是在延迟扩展发生之前很久就完成的,甚至可以识别任何感叹号。插入符号的识别和转义似乎也在之后发生。此外,通常在解析器中隐藏插入符号的字符串周围甚至还有引号。

0 投票
2 回答
536 浏览

loops - 批处理文件 ENABLEDELAYEDEXPANSION 没有写出变量

我有下面的代码片段,它将一个变量输出到一个文本文件中。 %drone%将是一个简单的文本字符串,并且%counter%是一个循环中的数字,用于计算迭代次数。

echo %drone% !counter!正确的值回显到屏幕上,但在echo Done: %drone% Files deleted: !tempcounter! >> clearTempFilesonDrones.txt代码中,!tempcounter!当输出到文件时变量为空白。

我试图将其设置为临时变量并使用%tempvariable%,但这没有用。我也尝试过"!counter!",因为它会认为这是一个字符串,而不仅仅是一个数字,但也没有用。

有任何想法吗?

我无法将整个代码复制到当前客户端中被阻止的 pastebin 或类似文件中,因此只需上传一个提取物。