首页 > 解决方案 > 无法将具有多个特殊字符的字符串传递给批处理脚本中的变量

问题描述

在批处理脚本中,我试图捕获包含多个特殊字符的字符串

< , > , "文本" , = , / , \ 等。

在一个变量中,但我无法使用不同的转义字符让它工作

\ 、 "" 、 ^ 等。

在不同的配置中,无论是单个封闭,单独转义每个特殊字符,转义字符串部分都没有成功。

编辑:根据 Squashmans 的评论,我尝试使用 enableddelayedexpansion 但这并没有解决问题

例子:

setlocal enabledelayedexpansion

set "var=<ExampleString Id="63fc47e6-fafb-48f92-bd92-38ed9aa4a765" Name="The Name of this item." AnotherItem="Name of this item." AnotherID="AAA-123" Action="GO"><ItemOne><Item Id="*"/></ItemOne><ItemTwo><Location1 Path="Mydrive\Folder1\*"/><Locaton2 Path="C:\Program Files (x86)\*"/></ItemTwo></ExampleString>"

ECHO %var%

它仍然返回错误:

<此时是出乎意料的。

标签: batch-file

解决方案


根据 Squashmans 使用 enableddelayedexpansion 的评论,正确使用变量语法和下一条评论指出实际上延迟扩展使用!var!而不是%var%它完美地工作。

解决方案示例:

setlocal enabledelayedexpansion

set "var=<ExampleString Id="63fc47e6-fafb-48f92-bd92-38ed9aa4a765" Name="The Name of this item." AnotherItem="Name of this item." AnotherID="AAA-123" Action="GO"><ItemOne><Item Id="*"/></ItemOne><ItemTwo><Location1 Path="Mydrive\Folder1\*"/><Locaton2 Path="C:\Program Files (x86)\*"/></ItemTwo></ExampleString>"

ECHO !var!

使用setlocal enabledelayedexpansion, 正确的变量语法set "var=content"和扩展的实际延迟 with!var!而不是%var%


推荐阅读