我找到了一种从文件中删除文字的方法,例如:
set text=!text:^"~JP~"=!
删除文字~JP~
。这样做效果很好,因为长期没有要删除的功能特征。现在我有了字符→(如右箭头所示,ASCII代码22,十六进制1A) -
set text=!text:^"→ "=!
导致错误(以及一些哔哔声)。该行分为
set text=!text:^"
"=!
有办法吗?比较文本与十六进制代码22 1A 09 22(22 =“,1A =→,09 =标签)?
答案 0 :(得分:3)
正如杰布在他的回答中解释的那样,批量解析器将0x1A转换为换行符,但如果使用变量,则可以执行搜索和替换。以下是jeb谈论的一个例子。我在批处理文件中嵌入了字符串(十六进制代码)0x1A 0x09。我使用FOR / F和FINDSTR将值转换为FOR变量。之后的一切都相当直接。
@echo off
setlocal enableDelayedExpansion
:::→ :
for /f "delims=:" %%A in ('findstr "^:::" "%~f0"') do (
set "text=abc"%%A"def"
set text
set "text=!text:"%%A"=!"
set text
)
以下是结果:
text=abc"→ "def
text=abcdef
我没有在嵌入文本中包含引号,因为→
之后的所有内容都必须是有效的语法。选项卡和冒号是无害的,但引用会导致语法错误。
0x1A的行为表现得像换行符可能很有用。这是我用来解决的机制:Is it possible to embed and execute VBScript within a batch file without using a temporary file?
答案 1 :(得分:1)
您甚至可以替换像0x1A这样的字符,但这个字符有点问题,因为它会在解析批处理文件时转换为换行符。
但是使用内容为0x1A的变量将起作用。