batch-file - 有没有一种简单的方法可以在 Windows 批处理文件中定义和使用复杂的文字字符串,而无需手动转义每个特殊字符?

标签 batch-file literals

背景

我正在尝试创建一个可以使用 azcopy 将文件复制到 Azure 存储资源管理器的批处理文件。我只想将我的 SAS key 复制并粘贴到我的批处理文件中,而不必每次都找到并转义所有特殊字符(&、= 等)。

我的问题

如何在批处理文件中使用这些字符轻松定义复杂的字符串,这样它们就不会被解释,也不必手动将它们转义?这可能吗?例如,是否有一些关键字或其他东西我可以添加到 set 语句中,基本上告诉它,“嘿,这个变量值中的所有字符都应该按原样使用,没有任何解释”?

我看过的一些资源

在某些语言中,您将变量值放在双引号中以使其成为文字。我不确定如何在批处理文件中执行此操作。

一个例子

假设我有这个伪 key :

nifty-11-stuff%3A28GOOBER%3A5&se=2022

假设我想完全按照变量中的原样保留和使用这个字符串,这样如果我稍后在我的批处理命令中使用它,它就不会发生变化。

我试过这段代码(带引号):

@echo off
setlocal EnableDelayedExpansion
set SAS="nifty-11-stuff%3A28GOOBER%3A5&se=2022"
echo %SAS%
pause

我在 VSCode 中的终端输出是这样的:

PS D:\git\documentationutilities> cmd /c "d:\git\documentationutilities\test.bat"
"nifty-11-stuffA28GOOBERA5&se=2022"

请注意 %3A 实例正在被解释并因此从最终值中删除。

提前感谢您提供的任何帮助。

最佳答案

百分号甚至没有进入字符串(使用set var 验证),所以我使用了一个包含您的确切字符串的文本文件。延迟展开避免字符串被解析:

@echo off
setlocal EnableDelayedExpansion
<test.txt set /p "var="
set var
echo var=!var!

关于batch-file - 有没有一种简单的方法可以在 Windows 批处理文件中定义和使用复杂的文字字符串,而无需手动转义每个特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72691819/

相关文章:

windows - 检查是否安装了 WMIC,将数据从批处理文件写入文件

windows - 批处理脚本传递多个参数调用

java - 等待 jar 从批处理运行到完成?

Java:如何从泛型类型获取类文字?

batch-file - DICOM 领域的值(value)超出预期

shell - 用于确定循环中相对路径的批处理脚本

literals - PyParsing:是否可以全局抑制所有文字?

javascript - JavaScript 中的文字和实例表示法

vb.net - .NET 日期变量规范和区域设置

c++ - LL 是什么意思?