wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了变量 – 批处理脚本帮助 – 将DelayedExpansion Var的子字符串替换为另一个DelayedExpansion Var大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

基本上我正在尝试!var1:SomeText =!var2 !!但是这段代码不起作用. 我错过了什么? 在执行搜索和替换使用变量进行搜索和/或替换的操作时,扩展顺序至关重要.必须在外部搜索和替换扩展之前扩展内部变量.尝试使用延迟扩展两者显然不起作用,因为延迟扩展发生在一个时间点. 在另一个变量中扩展变量的经典方法使用外部的延迟扩展和内部的正常:echo!var1:SomeText =%var2%!
基本上我正在尝试!var1:SomeText =!var2 !!但是这段代码不起作用.
我错过了什么?

解决方法

在执行搜索和替换使用变量进行搜索和/或替换的操作时,扩展顺序至关重要.必须在外部搜索和替换扩展之前扩展内部变量.尝试使用延迟扩展两者显然不起作用,因为延迟扩展发生在一个时间点.

在另一个变量中扩展变量的经典方法使用外部的延迟扩展和内部的正常:echo!var1:SomeText =%var2%!“

我打算假设你想为两者使用延迟扩展是有原因的.也许扩展发生在代码块中,其中一个变量设置在同一个块中.正常扩展将不起作用,因为在块结束之前,它无法看到块内分配的值.

解决方案1

解决问题的一种方法是使用CALL:

call echo %%var1:SomeText=!var2!%%

其工作原理如下:

>解析器的百分比阶段将双倍百分比转换为单个百分比,从而产生
call echo%var1:SomeText =!var2!%
>延迟扩展扩展!var2!,导致
调用echo%var1:SomeText = replacementText%
>执行CALL ECHO并进行额外的百分比处理.执行搜索和替换扩展,导致ResultOfSearchAndreplace回显到屏幕.

这有效,但速度相对较慢.如果扩展值具有像>,&amp ;;等特殊字符,它也可能会出现问题.或者.我很少使用这种技术.

解决方案2

快速且更可靠的方法是分两步进行扩展.首先转移!var2的值!到FOR变量.然后,您可以使用FOR变量作为替换字符串,并在第二步中使用延迟扩展.这完全避免了更脆的百分比膨胀.

for /f "delims=" %%A in ("!var2!") do echo !var1:SomeText=%%A!

大佬总结

以上是大佬教程为你收集整理的变量 – 批处理脚本帮助 – 将DelayedExpansion Var的子字符串替换为另一个DelayedExpansion Var全部内容,希望文章能够帮你解决变量 – 批处理脚本帮助 – 将DelayedExpansion Var的子字符串替换为另一个DelayedExpansion Var所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。