问题标签 [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.
batch-file - 使用批处理文件从字符串(文件名)中提取特定部分
我正在尝试提取当前目录中所有文件名(pdf 文件)的一部分。
文件名的长度会有所不同,但最后一部分(日期时间和扩展名)始终为 16 个字符。其余部分将始终具有不同的长度。即使是我需要的部分也可能有不同的长度。
我尝试使用这里获得的 lastIndexOf 函数。
文件名 例如:academyo-nonpo- 2582365 -082416051750.pdf
我想提取粗体部分。我首先尝试修剪最后 17 个字符(这部分将始终具有固定长度。)然后尝试获取“-”的最后一个索引(因为第一个部分可以具有可变字符长度。)并修剪字符直到该位置,它应该返回文件名的所需部分。
作为第三个参数传递给函数的变量的引用似乎没有返回所需的值。我不知道这里有什么问题。
string - 使用 Windows cmd 中的 set 循环遍历字符串值
我的 Windows 批处理文件应该读取文件名并创建一个根据文件名的第 2 到第 5 个字母命名的目录:
'string' 的值并没有更新,即在循环的每个步骤中它都是相同的。我怎样才能更新它?
这是 cmd 输出:
batch-file - 延迟扩展错误
我正在玩批处理文件和延迟扩展。
我只是试图打印目录中所有项目的文件/文件夹名称。
当我这样做时,我会收到错误:
此命令的语法不正确
我唯一能想到的是我错误地使用了延迟扩展。
windows - 批处理脚本 - 如果尚未设置/定义,则设置/定义环境变量
我需要一个批处理脚本来调用
从另一个脚本或命令行。
我绝不是 Windows 批处理脚本方面的专家,而是通过反复试验并将不同的东西拼凑在一起,到目前为止,我已经想出了这个:
调用时,执行我需要的操作:
在这里寻求更好/最佳的解决方案。这个在我看来确实很丑。
batch-file - 重新定义与另一个变量一起定义的变量的值
我目前正在使用“jeb”中的这种方法来处理许多变量。 BAT 文件:变量内容作为另一个变量的一部分
效果很好。问题是我需要再次设置一些变量的值。我所有的尝试都惨遭失败。
batch-file - 如何在批处理文件中使用数组?
我正在尝试重命名 PC 上的 NIC 名称。它有很多 NIC(它们是虚拟的)。我可以像这样得到他们的名字
我想在该循环中使用 netsh 来重命名它们。不幸的是,目标名称不是简单的递增数字。所以我做了
这输出
但如果我尝试
我只是得到垃圾输出。有什么方法可以将前面示例中生成的字符串评估为变量?然后我可以将它传递给 netsh 进行重命名。
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 语句中的延迟扩展可以正常工作。
windows - 从运行时生成的变量名展开环境变量
我创建了一个批处理文件,它根据我传递给它的编译器名称来更改 PATH。我还想在运行时从这些变量中进行选择,我有另一个批处理文件,我在其中生成要查看的适当环境变量的名称,但我看不到如何扩展生成的变量
例如
因此,当调用批处理文件时,环境变量 _1 和 PLATFORM 展开以生成我要展开的变量名称的命名约定部分
如果我调用echo EXE_PATH_%_1%_%PLATFORM%
它会产生我想要扩展的变量的名称
如何从生成的名称转到具有该名称的环境变量的内容?
我怀疑需要延迟支出,但我不确定
windows - 修改 for 循环以不在批处理脚本中使用延迟扩展
在我努力理解for..do
循环语法及其对%%
变量的使用中。我已经经历了 2 个特定的示例/实现,其中一个for
循环不使用DELAYEDEXPANSION
,另一个循环DELAYEDEXPANSION
使用!
符号。第一个 for 循环似乎与 Windows XP 等较旧的操作系统兼容,而第二个 for 循环示例则不兼容。
具体来说,第一个 for 循环示例取自此答案(与此相关),第二个 for 循环示例取自此答案。
下面复制的两个示例的修改代码:
第一个 for 循环
第二个for循环
由于我一直在阅读并看到延迟扩展(或!
符号)与旧操作系统(例如 Windows XP)不兼容的问题,我想看看如何编写第二个循环,就像第一个循环一样;即不使用DELAYEDEXPANSION
.
powershell - “!”问题的解决方法 具有延迟变量扩展的 For 循环中的文字
如何为 FOR 循环制定解决方法?问题是延迟扩展对于带有“!”的文件名失败。在他们中
代码(这是更大脚本的一部分)
如果无法批量执行,我该如何在 PowerShell 中执行原始批处理可以调用的操作,例如:
编辑: CALL SET 修复了原始代码,完全避免了 DelayedExpansion