变量 – 批处理脚本帮助 – 将DelayedExpansion Var的子字符串替
基本上我正在尝试!var1:SomeText =!var2 !!但是这段代码不起作用.
我错过了什么? 解决方法
在执行搜索和替换使用变量进行搜索和/或替换的操作时,扩展顺序至关重要.必须在外部搜索和替换扩展之前扩展内部变量.尝试使用延迟扩展两者显然不起作用,因为延迟扩展发生在一个时间点.
在另一个变量中扩展变量的经典方法使用外部的延迟扩展和内部的正常:echo!var1:SomeText =%var2%!“ 我打算假设你想为两者使用延迟扩展是有原因的.也许扩展发生在代码块中,其中一个变量设置在同一个块中.正常扩展将不起作用,因为在块结束之前,它无法看到块内分配的值. 解决方案1 解决问题的一种方法是使用CALL: call echo %%var1:SomeText=!var2!%% 其工作原理如下: >解析器的百分比阶段将双倍百分比转换为单个百分比,从而产生 这有效,但速度相对较慢.如果扩展值具有像>,& ;;等特殊字符,它也可能会出现问题.或者.我很少使用这种技术. 解决方案2 快速且更可靠的方法是分两步进行扩展.首先转移!var2的值!到FOR变量.然后,您可以使用FOR变量作为替换字符串,并在第二步中使用延迟扩展.这完全避免了更脆的百分比膨胀. for /f "delims=" %%A in ("!var2!") do echo !var1:SomeText=%%A! 以上是有效的,因为FOR变量扩展发生在延迟扩展之前. 到目前为止,这是我解决此问题的首选方法. 有关批处理解析器各个阶段的更全面说明,请参阅jeb对How does the Windows Command Interpreter (CMD.EXE) parse scripts?的回答 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-mobile – 使Windows Mobile设备模拟蓝牙HID设备
- 在Windows上从python连接到odbc的常用方法?
- 获取Windows批处理文件中的最后一个命令行参数
- 第一周1 2
- Window调整大小事件在jQuery中触发两次
- win10 安装msi 提示2502、2503的错误代码(已成功解决)
- 为什么我不能从System.Object中提取ushort然后将其作为uint
- osx – 可以在Windows机器上运行VMWare Fusion映像[已关闭]
- windows-phone-7 – 获取WP7电池遥测数据?
- Windows_mysql_8.0.12_installed
- windows-server-2008 – psexec Windows Server
- Windows 7中的Javacv UnsatisfiedLinkError
- 调试 – DOS调试类似于32位x86程序集的程序
- winapi – Windows内核中可能的最大文件名长度
- Microsoft符号服务器/本地缓存哈希算法
- windows-server-2008 – 查看脱机映射网络驱动器
- Windows 7中未加载PHP 7 FTP扩展
- windows – 为什么我的WINVER 4 .exe在W98SE下运
- 如何将自定义CA根证书添加到Windows中的Python使
- windows-phone-7.1 – 删除windows phone芒果中的