`
喜马拉雅上的小草
  • 浏览: 50844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BAT脚本:如何从用户传入的参数中去掉引号

 
阅读更多

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

一、将字符串中的引号脱去的简单办法有三种,它们的功能相近,只是各自的使用场合不同,可以处理大多数的情况。
a, 如果字符串存在于命令行参数%1中,可以使用%~1 脱去第一对外侧引号,如果没有外侧引号则字符串不变;
b, 如果字符串存在于for 替代变量%%i 中,可以使用%%~i脱去第一对外侧引号,如果没有外侧引号则字符串不变;
c, 如果字符串存在于环境变量%temp%中,可以使用%temp:"=% 脱去其中所有的引号,如果没有引号则字符串不变;
d, 以上三种方案在某种程度上可以互相通用,因为它们作为变量的一种类型,可以通过类似以下的代码或代码片断相互转移:
for替代变量转命令行参数: call:DeQuote %%i
环境变量转命令行参数:call:DeQuote %temp%
命令行参数转for替代变量:for %%i in (%1) do ...
环境变量转for替代变量:for %%i in (%temp%) do ...
命令行参数转环境变量:set temp=%1
for替代变量转环境变量:for ... set temp=%%i

二、如果字符串的引号分布情况很复杂,或者我们对被脱去引号的位置有特殊要求,或者字符串中可能出现某些控制字符,则可以将字符串首先通过1-4 中的对应方法转存至环境变量中,在使用以下方案或其组合进行处理:
a, 可以使用set var=%var:~1%脱去环境变量var 串首的第一个引号,如果串首不存在引号则第一个字符被脱去;
b, 可以使用set %var:*"=% 脱去环境变量var 串首的第一个引号,如果串首不存在引号则变量值不变;
c, 可以使用set var=%var:~0,-1% 脱去环境变量var 串尾的最后一个引号,如果串尾不存在引号则最后一个被脱去;
d, 可以使用set "var=%var%脱去环境变量var 串尾的最后一个引号,如果串尾不存在引号则环境变量被清空;
e, 可以使用set var=%var:~1,-1% 脱去环境变量var 串最外侧的一对引号,如果串外侧不存在引号则外侧一对字符被脱去;
f, 可以使用%var:*"=set "var=%脱去环境变量var 串最外侧的一对引号,如果串外侧不存在引号则出现语法错误;
g, 可以使用set "var=%var:"=%"脱去环境变量var 串中可能出现的所有引号,如果串外侧不出现引号则变量值不变;与1-3 不同的是,它容许字符串的匹配引号对内出现特殊控制字符;

Link: http://blog.csdn.net/chance_wang/archive/2009/12/24/5068149.aspx

分享到:
评论

相关推荐

    BAT脚本:每隔两秒打印一个字符串

    BAT脚本:每隔两秒打印一个字符串

    实现bat脚本封装接口,可以自动判断是否需要向下传参

    在IT行业中,批处理脚本(BAT)是Windows操作系统中常用的一种自动化工具,它通过简单的命令行指令集合来执行一系列操作。本主题聚焦于如何利用BAT脚本实现接口封装,以便进行更高效的包管理和参数传递,提升脚本的...

    通过BAT脚本检测并安装WINDOWS服务程序

    在Windows操作系统中,批处理(BAT)脚本是一种基于DOS命令行的自动化工具,用于执行一系列命令。本文将深入探讨如何使用BAT脚本来检测和安装Windows服务程序,以及涉及的相关知识点。 首先,我们需要理解什么是...

    bat脚本技巧一键批量替换修改文本文件内容,bat脚本知识小技巧小妙招

    非常的方便,而且在修改前,bat脚本会先帮我们将源文件备份,避免发生了误操作的风险,包括脚本修改记录都会保存到日志文件中,欢迎大家使用bat脚本知识小技巧小妙招分享的,bat脚本技巧一键批量替换文件内容的脚本

    浏览器bat脚本截图,该bat脚本进行浏览器截图,截取整个网页

    在本案例中,"aa.bat" 文件就是这样一个批处理脚本,用户只需运行它,就能启动截图过程。 批处理脚本通常包含系统内置的或第三方的命令,如 NirCmd。"nircmd.exe" 文件是 NirCmd 工具的可执行程序,这是一个强大的...

    shell,bat脚本运行java程序

    在IT行业中,shell脚本和bat脚本是两种常见的批处理工具,用于自动化执行一系列操作系统命令。当需要定期或按需运行Java程序时,利用这两种脚本语言可以极大地提高工作效率。下面将详细介绍如何使用shell脚本(适用...

    springboot项目启动bat脚本

    6. **startup.bat脚本**: 这是一个批处理脚本,用于在Windows操作系统中执行一系列命令。在启动Spring Boot项目时,这个脚本通常包含`java -jar`命令,指定jar包的路径和相关参数,如内存分配等。例如: ``` @echo...

    bat脚本技巧一键批量替换文件名,bat脚本知识小技巧小妙招

    今天,我分享一个一键批量替换文件名的bat脚本给大家,因为我自己有这样的需求,所有从新写了一个bat脚本,顺便分享给大家,上期我们分享了批量改名,但是我在实际中遇到了这样的问题,有一些文件我是要去改它的...

    windows常用bat/vbs脚本合集

    在Windows操作系统中,批处理(BAT)脚本和Visual Basic Script(VBS)脚本是两种常见的自动化工具,用于执行一系列命令或者实现特定的功能。这个"windows常用bat/vbs脚本合集"可能是包含了多种实用脚本的集合,旨在...

    win10 用bat脚本修改dns

    总结,通过创建和使用BAT脚本,用户能够在Windows 10中快速、方便地更改DNS设置,这尤其适用于需要频繁切换DNS或批量管理设备的场景。只需理解基本的批处理命令和DNS工作原理,即可轻松实现这一目标。

    BAT脚本编写教程

    BAT脚本,全称为Batch Script,是Windows操作系统中的一种脚本语言,主要用于自动化执行一系列DOS命令。在本文中,我们将深入学习几个基础且常用的BAT脚本命令:echo、@、call、pause以及rem。 首先,`echo`命令...

    bat脚本使用Putty工具sftp上传文件.zip

    本教程将详细介绍如何通过编写bat脚本结合Putty工具中的psftp子程序实现SFTP(Secure File Transfer Protocol)文件上传,并且讲解如何利用Windows任务计划程序设置定时任务,从而实现自动化的文件传输。 首先,`...

    bat脚本从FTP下载文件的方式(下载实践的完整实例).bat

    bat脚本从FTP下载文件的方式(下载实践的完整实例)

    window BAT脚本编写教程

    在BAT脚本中,可以接收命令行参数,用 `%1`, `%2`, `%3` 等表示,分别对应脚本执行时输入的第1、2、3个参数。 ```batch @echo off echo 第一个参数是:%1 echo 第二个参数是:%2 ``` ### 5. 流程控制语句 - **`...

    Windows bat脚本之for循环用法详解

    在Windows操作系统中,批处理(bat)脚本是一种强大的自动化工具,它允许用户通过简单的命令行语法来执行一系列操作。其中,for循环是批处理脚本中非常关键的控制结构,用于重复执行某个命令或操作。本文将深入解析...

    很有用的bat脚本知识

    1. **bat脚本**:批处理脚本是用DOS命令编写而成的,它允许用户在单个文件中组合多条命令,以实现连续执行或条件执行。例如,可以创建一个脚本来启动多个应用程序,或者备份特定文件夹。 2. **编译脚本**:虽然bat...

    BAT脚本相关资料集合

    BAT脚本,全称为Batch Script,是Windows操作系统中的一种批处理命令文件,它允许用户编写一系列的DOS命令,以实现自动化执行任务。这个压缩包集合包含了一系列与BAT脚本相关的学习资料,从基础到进阶,对于想要深入...

    BAT批处理脚本-获取当前用户名和密码.zip

    在IT行业中,批处理脚本是一种非常实用的自动化工具,特别是在Windows系统环境下。"BAT"是批处理文件的扩展名,它是由一系列DOS命令组成的文本文件,用于执行一系列操作,比如管理系统、运行程序或者执行复杂的任务...

    windows上一键安装mysql的bat脚本(实测)

    在Windows操作系统中,有时我们需要快速部署MySQL数据库,这时可以利用批处理(BAT)脚本来实现一键安装。本文将深入解析标题为"windows上一键安装mysql的bat脚本(实测)"的相关知识点,包括如何创建和理解批处理脚本...

Global site tag (gtag.js) - Google Analytics