Windows命令提示符含大于号变量的正确回显方法求助
Windows CMD中正确保存并回显含
>的变量 问题原因
你执行echo %i%时,CMD会先把%i%替换成变量值Hello>World,这时候>会被当成重定向命令,导致本该输出到控制台的内容被写到了World文件里,自然看不到回显。
解决办法
方法1:开启延迟扩展
延迟扩展会改变变量的解析时机,避开预解析阶段的重定向判断:
setlocal enabledelayedexpansion set i=Hello^>World echo !i! endlocal
setlocal enabledelayedexpansion:打开当前命令会话的延迟扩展功能- 用
!i!代替%i%调用变量,此时变量在命令执行时才会展开,不会触发重定向 endlocal:关闭延迟扩展(如果后续不需要可以省略)
方法2:回显时转义特殊字符
要是不想开延迟扩展,可以在回显时把变量里的>重新转义:
set i=Hello^>World echo %i:>=^>%
%i:>=^>%是变量替换语法,把变量i里的>换成^>,这样回显时>就会被当成普通字符输出
方法3:用引号定义变量+延迟扩展
定义变量时用引号包裹,不用手动转义>,再配合延迟扩展回显:
setlocal enabledelayedexpansion set "i=Hello>World" echo !i! endlocal
set "i=Hello>World":引号里的>不会被CMD解析为重定向,直接存进变量- 同样用
!i!回显,避免触发重定向
内容的提问来源于stack exchange,提问作者user3163495
相关产品推荐
相关产品推荐

