批处理 变量的 两边的引号如何去掉?

本文详细介绍了在批处理中如何去除字符串两侧的双引号,提供了多种方法,包括利用`set`命令、`findstr`正则表达式等,确保不会误删或影响命令执行。同时,提到了特殊字符的处理和转义规则,以及在不同场景下的应用。
摘要由CSDN通过智能技术生成

网上看了不少文章,都不能得到完美无缺的答案。最后自己琢磨出一个绝妙的方法:

@rem style:Cobol
@echo off
set var="1"2"3
echo "%var%%var%"| findstr /i /r "^"""""".*""""""$" > nul && set "var=%var:~1,-1%"
echo %var%
cd.

解决了:单数个双引号,命令定界混淆;首尾误删除;命令执行异常退出等。

估计 也可以安排个 set "%var%%var%",待以后试试。

具体测试用例如下:

@echo off

set var="1"2"3"
echo.s1=%var%
set "var=%var:~1%"
echo.s1=%var%

set var=1"2"3"
echo.s1=%var%
set "var=%var:~1%"
echo.s1=%var%
 
set var=
echo.s1=%var%
set "var=%var:~1%"
echo.s1=%var%

rem 脱去环境变量 var 的第一个字符;如果 var 原串为空,则结果为表达式内容 【~1】。
 
set var="1^"2^"3"
echo.s2=%var%
set var=%var:*"=%
echo.s2=%var%

set var=1^"2^"3"
echo.s2=%var%
set var=%var:*"=%
echo.s2=%var%

set var=123"
echo.s2=%var%
set var=%var:*"=%
echo.s2=%var%

set var=123
echo.s2=%var%
set var=%var:*"=%
echo.s2=%var%
 
set var=
echo.s2=%var%
set var=%var:*"=%
echo.s2=%var%
 
rem 脱去环境变量 var 的第一个引号及其前面的内容,如果不存在引号,则变量值不变;如果 var 原串为空,则结果为表达式内容 【*"=】。
 
set var="1^"2^"3"
echo.s21=%var%
set var=%var:*"=*%
echo.s21=%var%

set var=1^"2^"3"
echo.s22=%var%
set var=%var:*"=*%
echo.s22=%var%

set var=123"
echo.s23=%var%
set var=%var:*"=*%
echo.s23=%var%

set var=123
echo.s24=%var%
set var=%var:*"=*%
echo.s24=%var%
 
set var=
echo.s25=%var%
set var=%var:*"=*%
echo.s25=%var%

rem            dfe fefef 

set "var="1^"2^"3""
echo.s3=%var%
set var=%var:~0,-1% 
echo.s3=%var%

set "var="1^"2^"3"
echo.s3=%var%
set var=%var:~0,-1% 
echo.s3=%var%

set "var="123"
echo.s3=%var%
set var=%var:~0,-1% 
echo.s3=%var%
 
set "var="
echo.s3=%var%
set var=%var:~0,-1% 
echo.s3=%var%
 
rem 脱去环境变量 var 的最后一个字符;如果原串为空,则结果为表达式内容 【~0,-1】。
 
set "var="1^"2^"3""
echo.s4=%var%
set "var=%var%
echo.s4=%var%

set "var="1^"2^"3"
echo.s4=%var%
set "var=%var%
echo.s4=%var%

set "var="123"
echo.s4=%var%
set "var=%var%
echo.s4=%var%

set "var=123"
echo.s4=%var%
set "var=%var%
echo.s4=%var%
 
set var=
echo.s4=%var%
set "var=%var%
echo.s4=%var%
 
rem 脱去环境变量 var 的最后一个引号及其后面的内容,如果不存在引号,则变量值不变;如果原串为空,则结果为空。
 
set "var="1^"2^"3""
echo.s5=%var%
set var=%var:~1,-1% 
echo.s5=%var%
 
set var="1"2"3
echo.s5=%var%
set var=%var:~1,-1% 
echo.s5=%var%

set var=1"2"3"
echo.s5=%var%
set var=%var:~1,-1% 
echo.s5=%var%

set var=1"2"3
echo.s5&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值