【发布时间】:2017-01-31 10:53:06
【问题描述】:
我想将带有多个空格的变量传递给批处理脚本,但它会删除多个空格并将其替换为一个。
C:\user\bat\myscript.bat var1 var2 "'var3'" "'some text followed by double blank__some more text'"
__要显示两个空格('',空格,不是下划线)
我已经尝试过使用%~4、%4 等,但它总是会删除双空格。
br, 曼努埃尔
bat 脚本是从 Java 应用程序调用的,该应用程序从数据库中获取整个调用字符串。
脚本调用:
C:\user\bat\eqkvard.bat C:\user\reports\eqkvard.rdf C:\user\output\kontrollvarianten\myoutput.pdf "''"
"'00.101 D-Bereiche LKZ + OKZ(blank)(blank)L52 Gbd.151 -Mediafill'"
该网站不显示两个空白。 引号的语法如下:(")(')text(")
脚本本身:
START "myprogram" /MIN rwrun report=%1 userid=user/pw@myDB desformat=pdf destype=file desname=%2 p_1=%3 p_2=%4
脚本使用参数调用 Oracle 报告运行时。 希望这能有所帮助。
【问题讨论】:
-
将变量括在双引号 (
") 中足以传递多个空格(单引号 ('),除非参数本身的一部分是不需要的)。 但是,您对脚本中的变量做什么 会产生影响。使用脚本的minimal reproducible example 编辑问题,指明您希望它做什么以及它正在做什么。 -
非常适合我 (W10)。也许您应该向我们展示
myscript.bat并描述您是如何执行批处理的。 -
感谢您的 cmets。 bat 脚本从 Java 应用程序中调用,该应用程序从数据库中获取整个调用字符串。是的,单引号是参数的一部分。脚本调用:C:\user\bat\eqkvard.bat C:\Aquery\reports\eqkvard.rdf C:\user\output\kontrollvarianten\myoutput.pdf "''" "'00.101 D-Bereiche LKZ + OKZ L52 Gbd .151 -Mediafill'" 脚本本身: START "myprogram" /MIN rwrun report=%1 userid=user/pw@myDB desformat=pdf destype=file desname=%2 p_matnr=%3 p_kpname=%4 脚本调用 Oracle使用参数报告运行时。希望这能有所帮助。
-
将脚本编辑到问题中 - 无法在评论中阅读。
-
@ManuelU.使用测试程序代替
rwrun,您所拥有的似乎保留了空白(包括双空白);rwrun处理参数的方式可能有问题。您可以尝试将p_1=%3 p_2=%4替换为"p_1=%~3" "p_2=%~4"。批处理文件调用中的双引号应保留空间,但将双引号作为参数的一部分。使用波浪号 (%~3) 会删除双引号,然后(重新)将整个"p_1=...."括在双引号中可以保留它们以供rwrun查看。 [续]
标签: windows oracle batch-file cmd