概述批处理脚本:为什么打印“=而不是空string?
我试图在批处理中使用参数扩展删除一些文本中的引号。 谁能告诉我这是为什么:
@echo off setlocal set args=%* echo %args:\”=%
打印\”=而不是什么?据我可以看到%args:\”=%应该用什么都不replace所有的引号,所以我不明白为什么会发生这种情况。
任何帮助将不胜感激,谢谢!
编辑:为了澄清,我没有传递任何参数到批处理脚本。
在windows中转义空间
在上午9点之前运行的Bat文件会给出错误,无效的号码。 数字常数是十进制(17),
在命令提示符下获取MysqLpath
基于文件系统中的位置的Shell提示符
运行远程命令时,Typepref命令不提供有效的计数器
Howto:从windows命令行search文件中的string?
为什么windows命令提示符和batch file的编码有区别?
使用命令提示符启动保存的Python程序时遇到麻烦
如何根据条件格式化我的zsh提示符?
Python Pip安装:在命令提示符窗口中不能识别为batch file
这是您在不向脚本传递任何参数时得到的结果。
如果args没有被定义,那么%args:\”=%被扩展如下:
%args:被视为一个不存在的变量扩展,它变成什么都没有
\”=被视为自己
% (孤独的百分比)被剥离
这不是直观的,但恰好是cmd.exe的工作原理。 有关更多信息,请参阅https://stackoverflow.com/a/7970912/1012053 。
您可以通过使用if defined来防止该问题
@echo off setlocal set args=%* if defined args echo %args:\”=%
它在这里工作
C:windowssystem32>\”C:UsersUserDesktopTest2.bat\” dog dog
删除回声显示这一点
C:windowssystem32>setlocal C:windowssystem32>set args=dog C:windowssystem32>echo dog dog
您没有传递任何命令行参数。
C:windowssystem32>\”C:UsersUserDesktopTest2.bat\” C:windowssystem32>setlocal C:windowssystem32>set args= C:windowssystem32>echo \”= \”=
总结
以上是内存溢出为你收集整理的批处理脚本:为什么打印“=而不是空string?全部内容,希望文章能够帮你解决批处理脚本:为什么打印“=而不是空string?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容