[批处理]

编程入门 行业动态 更新时间:2024-10-18 18:18:28

[<a href=https://www.elefans.com/category/jswz/34/1768936.html style=批处理]"/>

[批处理]

场景

  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. 批处理中的双引号

更多推荐

[批处理]

本文发布于:2023-11-16 13:02:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1622799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:批处理

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!