我有一个批处理文件,需要传递一个包含管道和空格的参数.由于空格,在传入参数时需要将双引号附加到参数中.我需要去掉那些双引号并回显参数.通常情况下,使用〜会让我这样做,但我认为我传入的具体参数会导致问题.如果我这样做:
[test1.bat]
call test2.bat "Account|Access Level|Description"
[test2.bat]
echo %1 echo %~1
并运行test1.bat,我得到这个输出:
"Account|Access Level|Description" 'Access' is not recognized as an internal or external command,operable program or batch file.
您可以使用延迟扩展,因为它不关心特殊字符.
唯一的问题是将参数内容放入变量中,因为它只能通过百分比扩展来传输.
但在你的情况下,这应该工作.
唯一的问题是将参数内容放入变量中,因为它只能通过百分比扩展来传输.
但在你的情况下,这应该工作.
@echo off setlocal disableDelayedExpansion set "str=%~1" setlocal EnableDelayedExpansion echo !str!
备注,我先禁用延迟扩展,所以!和^不会被%1的扩展修改
编辑:可以禁用或启用延迟扩展
setlocal disableDelayedExpansion setlocal EnableDelayedExpansion
如果启用,它会添加另一种扩展变量的方法(!variable!而不是%variable%),primary是为了防止变量的括号块效应(在set /?中描述).
但扩展着!变量!还会阻止任何进一步解析的内容,因为延迟扩展是批处理行解析的最后阶段.
详细说明如下
how does the windows command interpreter cmd exe parse scripts
原文地址:https://www.jb51.cc/windows/372119.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。