BAT 参数去引号(各种去引号的奇葩方式)

2014-06-13  来源:本站原创  分类:DOS/BAT  人气:1 

这篇文章主要介绍了BAT 参数去引号,各种去引号的奇葩方式,需要的朋友可以参考下

很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& 、| 、&&、||,命令行参数界定符Space 、tab 、 ; 、= ,字符化转义符^ 、" ,变量化转义符% 等)字符化,失去特定的作用,而作为 普通的字符成为字符串的一个组成部分。

  一、将字符串中的引号脱去的简单办法有三种,它们的功能相近,只是各自的使用 场合不同,可以处理大多数的情况。

  1-1 、如果字符串存在于命令行参数%1中,可以使用%~1 脱去第一对外侧引号,如 果没有外侧引号则字符串不变;

  1-2 、如果字符串存在于for 替代变量%%i 中,可以使用%%~i脱去第一对外侧引号, 如果没有外侧引号则字符串不变;

  1-3 、如果字符串存在于环境变量%temp%中,可以使用%temp:"=% 脱去其中所有的 引号,如果没有引号则字符串不变;

  1-4 、以上三种方案在某种程度上可以互相通用,因为它们作为变量的一种类型, 可以通过类似以下的代码或代码片断相互转移:

1-4-1、for替代变量转命令行参数: call:DeQuote %%i 1-4-2、环境变量转命令行参数:call:DeQuote %temp% 1-4-3、命令行参数转for替代变量:for %%i in (%1) do ... 1-4-4、环境变量转for替代变量:for %%i in (%temp%) do ... 1-4-5、命令行参数转环境变量:set temp=%1 1-4-6、for替代变量转环境变量:for ... set temp=%%i

  二、如果字符串的引号分布情况很复杂,或者我们对被脱去引号的位置有特殊要求, 或者字符串中可能出现某些控制字符,则可以将字符串首先通过1-4 中的对应方法转存 至环境变量中,在使用以下方案或其组合进行处理:

  2-1 、可以使用set var=%var:~1%脱去环境变量var 串首的第一个引号,如果串首 不存在引号则第一个字符被脱去;

  2-2 、可以使用set %var:*"=% 脱去环境变量var 串首的第一个引号,如果串首不 存在引号则变量值不变;

  2-3 、可以使用set var=%var:~0,-1% 脱去环境变量var 串尾的最后一个引号,如 果串尾不存在引号则最后一个被脱去;

  2-4 、可以使用set "var=%var%脱去环境变量var 串尾的最后一个引号,如果串尾 不存在引号则环境变量被清空;

  2-5 、可以使用set var=%var:~1,-1% 脱去环境变量var 串最外侧的一对引号,如 果串外侧不存在引号则外侧一对字符被脱去;

  2-6 、可以使用%var:*"=set "var=%脱去环境变量var 串最外侧的一对引号,如果 串外侧不存在引号则出现语法错误;

  2-7 、可以使用set "var=%var:"=%"脱去环境变量var 串中可能出现的所有引号, 如果串外侧不出现引号则变量值不变;与1-3 不同的是,它容许字符串的匹配引号对内 出现特殊控制字符;

相关文章
  • BAT 参数去引号(各种去引号的奇葩方式) 2014-06-13

    这篇文章主要介绍了BAT 参数去引号,各种去引号的奇葩方式,需要的朋友可以参考下 很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& .| .&&.||,命令行参数界定符Space .tab . ; .= ,字符化转义符^ ." ,变量化转义符% 等)字符化,失去特定的作用,而作为 普通的字符成为字符串的一个组成部分. 一.将字符串中的引号脱去的简单办法有三种,它们的功能相近,只是各自的使用 场合不同,可以处理大多数

  • js中单引号与双引号冲突问题解决方法 2014-01-19

    这篇文章介绍了js中单引号与双引号冲突问题解决方法,有需要的朋友可以参考一下 如何解决js中单引与双引冲突,想下面的这段代码: html += ' <a onclick="return removeOpenCss('+e.point.lng+e.point.lat+')">取消</a>'; 这是js中的代码,如果这里这样写的话,会提示js错误,是因为removeOpenCss方法里的参数没有单引或者双引,如果这里,这样写的话: 复制代码 代码如下: html +

  • awk 打印单引号和双引号 2014-09-25

    今天遇到一个问题 awk 如何打印单引号和双引号 [[email protected] ~]# echo | awk '{print "\"" }' " or [[email protected] ~]# echo |awk '{print "\x22"}' " [[email protected] ~]# echo | awk "{print \"'\" }" # 比较喜欢这个方式,简单.容易理解 ' or [r

  • c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑) 2014-02-09

    c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下 问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来: 解决办法: 1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111: 可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转

  • php 输出双引号"与单引号'的方法 2014-06-25

    单引号中间的字面里面的变量不会执行,双引号中间的变量可以执行,所以在没有变量的情况下,用单引号输出字符效率要比用双引号高很多. 在php 编程中双引号"与单引号'是字符串与字符表现形式,那么我们要输出它怎么做呢,下面我们就来看个简单的输出单双引号的实例吧. 首页我们来看输出双引号的几种方法 方法一. $str ='我要输出双引号"'; echo $str; 结果为:我要输出双引号" 方法二 复制代码 代码如下: $str ="输出双引号\"";

  • php数组索引的Key加引号和不加引号的区别 2015-02-05

    这篇文章主要介绍了php数组索引的Key加引号和不加引号的区别,加引号和不加引号是有严重的区别的,需要的朋友可以参考下 今天在看一个PHP博客时留意了这么一句话:"PHP中的索引KEY值如果不用引号括起来的话,会将索引KEY值解释为一个常量,当找不到该常量的定义时,才将其解释为一个字符串".我有点不太相信,因为我一直都会将索引KEY用引号括起来,从而没有出现这种情况.趁现在有时间正好写行代码测试一下: define('WEBHOST','blog'); $wso = array();

  • 浅谈PHP中单引号和双引号到底有啥区别呢? 2015-02-10

    本文向我们简单介绍了php中单双引号的区别,以及对比了下javascript中单引号和双引号的区别,方便我们更好的理解,非常实用,推荐给大家 在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法的字符串定义. 单引号和双引号到底有啥区别呢? PHP允许我们在双引号串中直接包含字串变量. 而单引号串中的内容总被认为是普通字符,因此单引号

  • Shell脚本中单引号(')和双引号(")的使用区别 2015-03-18

    这篇文章主要介绍了Shell脚本中单引号(')和双引号(")的使用区别,主要探讨了变量在单引号和双引号中的不同,需要的朋友可以参考下 在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用"$param"这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首先大家看一段例子: [[email protected] ~]# name=TekTea [[email protected] ~]# echo $name TekTea [

  • javascript中单引号与双引号的区别 2013-05-03

    在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下: <input value="Test" type="button" onclick="alert(""OK"");" /> IE提示出错后,再漫不经心地改为: <input value="Test" type="button" onclick="alert(\"

  • PHP中单引号与双引号的区别分析 2014-06-19

    在PHP中,我们可以使用单引号或者双引号来表示字符串.不过我们作为开发者,应该了解其中的区别.单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要优与双引号 ①转义的字符不同 单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身.如果用双引号("")括起字符串,PHP懂得更多特殊字符串的转义序列. <?php $str1 = '\',\\,\r\n\t\v\$\"'; ech

  • 去跨国公司还是去创业公司? 2014-02-12

    去跨国公司工作可能是大部分人的梦想,特别是<杜拉拉升职记>的流行,更加说明了这个现象.不过作为一个曾经尝过螃蟹的人来说,跨国公司也并非十全十美,并不是每个人都适合去跨国公司,特别是有志于钻研技术的程序员,跨国公司未必是合适的选择. 以下摘自JavaEye网站的讨论贴: XXX 写道 小公司真他妈的操蛋 1 感觉干活就是在抢任务,无规划无文化 2 由于小公司这个平台,竞争力不行,所以利润就来源于你对员工的剥削程度 3 无任何安全感 4 积累不了任何经验和资历 还不如在大公司划水,所以在大公司划水

  • 热议:名校生考研调剂到普通院校 去还是不去? 2014-05-21

    2009考研复试战场的硝烟渐渐散去,调剂大军又呼啸而来,为那难得的调剂机会四处奔波.机会难得,大家是否还在为名校与普校之分而犹豫不决,为此跨考教育小编专门采访了几位调剂过来人,听听他们的看法,或许会给我们一些启示. 正方 勿因"执着"而误己 姚芳芳(研究生) 时下,但凡什么都讲究"名牌",只要沾上了这两个字眼,就仿佛被套上了金环,成为万人簇拥的宠儿了,连我们的读书圣地也没能幸免,纷纷落入"名牌"潮流.名牌服饰固然质量优良,但价钱也让人望而生畏:名

  • php中单引号和双引号的区别 2010-12-03

    单引号内部的变量不会执行 双引号会执行 如 $name = 'hello'; echo "the $name"; 会输出 the hello 而如果是单引号 $name = 'hello'; echo 'the $name'; 会输出 the $name 主要区别就是这个. 类别: Php 查看评论

  • 去百度还是去创新工厂? 信开复还是信彦宏? 2012-04-25

    面这篇文章得转载一下: 我个人感觉:作为一个有理想的人,还是要把focus放到做事情上,人生才有意义.国内太浮躁了. ========================================================== 我前两天,收到一封邮件,一位快要毕业的的大学生问我,是去百度,还是去创新工场? 他在来信中说,从个人道德价值观来说,他想去创新工场,要远离流氓企业,不然会有狼狈为奸.助纣为虐的感觉,对不起自己.但是创新工场那边情况不熟悉, 不知道怎么选择,并问我现在比较热的移动互

  • PHP中单引号与双引号 2013-03-18

    PHP的字符串可以通过单引号定义,也可通过双引号.由于之前从事的是非程序员工作,所以经常会忘记两者的区别.最近又碰到这个问题,就上网查了.其实很简单,就是双引号会解析包含在里面的变量而单引号不会. 例子如下: $str = "Hello"; echo "$str World!"; // 输出Hello World! echo '$str World!'; // 输出$str World! 如果遇到数组或对象的情况,就会复杂一些,需要用到花括号或者点号来实现.如: /

  • PHP效率计:从引号开始(单引号.双引号效率区别) 2014-09-15

    一直以来,程序的执行效率就是人们所关注的,在PHP中也不例外,从最简单的引号,也在思考他的效率. 我们特别做了实验,我们自称这个实验可能前无古人,后无来者. 我们的实验是借助最初级的实验方法:累积法和多次实验求平均值. 实验一:在普通情况下的效率 我们的实验是5000次执行10000个字节的文件,获得解析过程中的速度. 首先,本实验特别规定一个单位,这是为了更好地表示以及排除计算机本身效率的差异. 时间单位 TT,表示约 7.2×10[sup]-8[/sup]s . 我们获得四组实验数据,可理解

  • jquery 单引号和双引号的区别及使用注意 2014-03-14

    在js中单引号和双引号都是一样的,平时使用的时候尽量用单引号,只有碰到嵌套的时候才会同时用两种引号,感兴趣的朋友可以了解下 可以执行的语法:$("ul li a").filter(":contains('佳能'),:contains('松下'),:contains('卡西欧')").css("color","red"); 错误的语法:$("ul li a").filter(":contains(&

  • Linux中引号的那些事 2014-08-22

    引号 我们将把编写脚本的事情暂时搁在一边,然后来讨论一些,我们一直在用的,但是没有解释的东西. 引号在这一节里面,我们会讲述引号.引号有两个作用: 控制字符替换 和 执行将单词包含在一起的功能 我们已经使用过引号. 在我们的脚本里面,将文本信息赋值给常量的赋值操作就使用了引号: 在上面这个例子中,文本信息是被双引号包括住的.我们使用双引号的原因是-我们要把所有单词包括住,当作一个整体来对待.如果我们没有使用引号,那么bash解释器,就会将所有位于第一个单词后面的单词,解释为其他的命令(第一个单词

  • include 包含头文件的语句中 , 双引号和尖括号的区别是什么 ? 2014-09-27

    #incluce ""格式: 引用非标准库的头文件,编译器从用户的工作目录开始搜索.双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件:尖括号表示只在系统默认目录或者括号内的路径查找,通常用于包含系统中自带的头文件. 尖括号:在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找: 双引号:首先在当前的源文件目录中查找,若未找到才到包含目录中去查找. 详解: 预处理器发现 #include 指令后,就会寻

  • 关于C语言include尖括号和双引号的对话 2015-03-20

    A: #include "..." 和 #include <...> 有什么区别? B: 他喵的, 这么简单的问题. 尖括号是先在系统目录下找, 双引号是首先在当前目录下找, 找不到就找系统目录. A: 说得很含糊. 那么我问你, 当前目录有个叫hdr.h的文件, 当前目录下还有一个子目录sub, sub里面有两个文件hdr.h和1.c, 1.c中#include "hdr.h", 那么在当前目录编译sub/1.c, 它应该包含哪一个hdr.h? bas