[批处理]_[初级]_[如何删除变量值里的双引号]

场景

  1. 在使用Visual Studio开发本地程序的时,需要在项目属性,生成事件->生成后事件里增加一些资源的打包,复制,删除等操作,那么就需要用到批处理来进行。而传递带空格的路径给外部的批处理文件时就需要双引号引用从而路径能作为一个整体。但是批处理传递参数的时候会把双引号当做值来传给%1参数,这就会造成在外部批处理文件里变量出现以下的重复双引号情况。怎么办?
""C:\Program Files"\Microsoft Office"

说明

  1. 批处理传递参数给外部的批处理文件时,会把双引号和字符串值也传递进去。因此我们需要去掉传参的双引号。

  2. 首先因为听参数%1等不支持双%写法,所以需要把系统参数赋值给一个本地变量,之后再删除这个本地变量里的双引号。

set otherPath_1=%1\Microsoft Office
set rightPath_1=%otherPath_1:"=%
  1. 双引号替换的格式:
%变量名:"=%
@rem 把"赋值为空

%otherPath_1:"='%
@rem 把双引号替换为单引号

例子

run.bat

  1. 调用外部的build.bat批处理文件并传入参数。
@echo off
set progDir=C:\Program Files
@echo %progDir%
call build.bat "%progDir%" %progDir%
pause

build.bat

@echo "param_1 is %1"
@echo "param_2 is %2"
@echo "param_3 is %3"

set otherPath_1=%1\Microsoft Office
set otherPath_2="%1\Microsoft Office"

@echo otherPath_1 is %otherPath_1%
@echo otherPath_2 is %otherPath_2%

@rem 不能是系统的参数变量%1...,需要用户变量。
set rightPath_1=%otherPath_1:"=%
@echo "====== rightPath_1 is ======="
@echo %rightPath_1%

@rem 把双引号替换为单引号
set rightPath_2=%otherPath_1:"='%
@echo %rightPath_2%

输出

C:\Program Files
"param_1 is "C:\Program Files""
"param_2 is C:\Program"
"param_3 is Files"
otherPath_1 is "C:\Program Files"\Microsoft Office
otherPath_2 is ""C:\Program Files"\Microsoft Office"
"====== rightPath_1 is ======="
C:\Program Files\Microsoft Office
'C:\Program Files'\Microsoft Office

参考

  1. 批处理中的双引号

你可能感兴趣的:(批处理,Windows,双引号,删除,quotation)