【发布时间】:2022-01-21 08:16:41
【问题描述】:
问题:如何比较用户输入的字符串包含特殊字符,例如 Windows Batch 中的7^7%7&7=7"7!7?
未完成的代码:
set/p str1=URL:
rem if %str1%==7^7%7&7=7"7!7 ( // syntax error
rem if "%str1%"=="7^^7%%7^&7=7^"7!7" ( // still syntax error
echo Nice
) else (
echo Bad
)
预期输出:
> URL: 7^7%7&7=7"7!7
> Nice
> URL: 42
> Bad
附言用户输入的字符串在实际情况下实际上是有效的 url,因此所有valid url characters 都是可能的输入,对于与此问题类似的更一般情况,包括引号。
【问题讨论】:
-
=符号是批量子串修改所采用的搜索替换使用的命令标记,不能使用子串修改替换。考虑查看dave benhams jrepl.bat -
为什么需要
=-符号分隔?我问是因为我怀疑X/Y Problem。无论如何,您不能使用sub-string substitution,因为=-符号分隔搜索和替换字符串;但是,您可以使用 sub-string expansion 和goto循环遍历字符串的每个字符并用替换的字符重新组合字符串... -
@aschipfl 你说得对,我在我的问题中添加了太多误导和无用的信息,让我考虑一下并清理它
标签: batch-file variables cmd escaping string-comparison