windows – 在给定变量中转义百分号
发布时间:2020-12-14 01:56:20 所属栏目:Windows 来源:网络整理
导读:我的第一篇文章,大多数问题已经使用这里友好提供的知识解决了.但是现在我的想法已经用完了,还有一个关于在cmd.exe中处理毒物字符的问题. 假设有一个用双引号括起来的给定字符串变量.大多数毒物角色之前已经被常见的字符替换,左边的那些扰乱脚本的是“”,“(
我的第一篇文章,大多数问题已经使用这里友好提供的知识解决了.但是现在我的想法已经用完了,还有一个关于在cmd.exe中处理毒物字符的问题.
假设有一个用双引号括起来的给定字符串变量.大多数毒物角色之前已经被常见的字符替换,左边的那些扰乱脚本的是“&”,“(”,“)”和“%”.之后,字符串必须回显到没有引号的文件.所以我有想法逃脱毒性三倍: @echo off & setlocal ENABLEEXTENSIONS SET AlbumArtist=%1 CALL :EscapePoisonChars %AlbumArtist% AlbumArtist_VDN SET "FlacHyperLink==hyperlink^("file://%AlbumArtist_VDN%"^;"LossLess"^)") echo %FlacHyperLink% echo %AlbumArtist_VDN% endlocal &GOTO:EOF :EscapePoisonChars @echo off & setlocal ENABLEEXTENSIONS SET TmpString=%1 SET TmpString=%TmpString:&=^^^&% SET TmpString=%TmpString:(=^^^(% SET TmpString=%TmpString:)=^^^)% endlocal&SET %2=%TmpString:~1,-1%&GOTO :EOF 当我在上面调用我的脚本时,我得到了预期的输出 – 除了缺少百分号: G:YAET20130204_Work>TryAmper.bat "100% Rock & Roll (7' UpMix)" =hyperlink("file://100 Rock & Roll (7' UpMix)";"LossLess") 100 Rock & Roll (7' UpMix) G:YAET20130204_Work> 我知道这个百分比可以自己逃脱.所以“%%”通常会导致单个文字“%”.但是我找不到百分号的工作替换程序是不可能的,因为cmd总是将它解释为变量并尝试扩展它.这是处理这个问题的完全错误的方向还是只是对变量扩展的误解?任何提示都欢迎!谢谢! 干杯,马丁 编辑 谢谢你的帮助,马丁 解决方法
好问题!
首先,是的,你可以更换百分号,但不是百分比扩展,你需要在这里延迟扩展. Setlocal EnableDelayedExpansion set tmpstr=!tmpstr:%=%%! 但是如果使用延迟扩展,则不再需要转义,因为延迟扩展是批处理解析器的最后阶段,并且所有字符都失去了任何特殊含义. Echo !tmpvar! 编辑:清洁解决方案 @echo off setlocal DisableDelayedExpansion REM * More or less secure getting the parameter SET "AlbumArtist=%~1" setlocal EnableDelayedExpansion SET "FlacHyperLink==hyperlink("file://!AlbumArtist!";"LossLess")" echo !FlacHyperLink! echo !FlacHyperLink!> hugo.txt 首先需要disableDelayedExpansion,以获得%1的感叹号.之后,您应该切换到延迟扩展并在任何地方使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何从Dart中的Uint8List读取16位int?
- windows – 如何获取Internet Explorer支持的SSL
- windows和linux下 Python2,Python3 的环境及安装
- windows-8 – 适用于阿拉伯语的Windows 8 Metro风
- windows-server-2003 – Windows 2003服务器上的
- windows – 如何创建Win32控件以包含其他Win32控
- Hewlett Packard定制OEM Windows上的Delphi平台错
- Windows 8上的Java 7 Debug无法正常工作
- 如何在基于Windows Nano Server的容器中运行ngin
- windows-server-2003 – 如何防止域管理员被拒绝
热点阅读