Batch file Scala Huygens Fokker(仅限命令行)v1.88b不幸地删除了额外的空间

Batch file Scala Huygens Fokker(仅限命令行)v1.88b不幸地删除了额外的空间,batch-file,Batch File,批次代码: scala.exe --SET SYNTH 117^ --LOAD /MAPPING \"My mapping\"^ --LOAD \"Intonation with extra spaces\"^ --SEND /FILE \"Test\"^ --EXIT scala.exe --SET SYNTH 117^ --LOAD /MAPPING \"My mapping\

批次代码:

scala.exe --SET SYNTH 117^
          --LOAD /MAPPING \"My mapping\"^
          --LOAD \"Intonation        with extra spaces\"^
          --SEND /FILE \"Test\"^
          --EXIT
scala.exe --SET SYNTH 117^
          --LOAD /MAPPING \"My mapping\"^
          --LOAD \"Intonation without extra spaces\"^
          --SEND /FILE \"test\"^
          --EXIT
它给了我输出:

Intonation with extra spaces.scl not found or not a scale file
使用批次代码:

scala.exe --SET SYNTH 117^
          --LOAD /MAPPING \"My mapping\"^
          --LOAD \"Intonation        with extra spaces\"^
          --SEND /FILE \"Test\"^
          --EXIT
scala.exe --SET SYNTH 117^
          --LOAD /MAPPING \"My mapping\"^
          --LOAD \"Intonation without extra spaces\"^
          --SEND /FILE \"test\"^
          --EXIT
工作正常

我如何告诉批处理不要忽略额外的空格?

它不是scala.exe,而是使用我们得到的简单命令行参数转储工具

W:\>type 56190749.cmd
vcCmdLine.exe --SET SYNTH 117^
              --LOAD /MAPPING \"My mapping\"^
              --LOAD \"Intonation        with extra spaces\"^
              --SEND /FILE \"Test\"^
              --EXIT
W:\>56190749.cmd

W:\>vcCmdLine.exe --SET SYNTH 117              --LOAD /MAPPING \"My mapping\"              --LOAD \"Intonation        with extra spaces\"              --SEND /FILE \"Test\"              --EXIT
cmdline:[vcCmdLine.exe  --SET SYNTH 117              --LOAD /MAPPING \"My mapping\"              --LOAD \"Intonation        with extra spaces\"              --SEND /FILE \"Test\"              --EXIT]

arg_000:[vcCmdLine.exe]
arg_001:[--SET]
arg_002:[SYNTH]
arg_003:[117]
arg_004:[--LOAD]
arg_005:[/MAPPING]
arg_006:["My]
arg_007:[mapping"]
arg_008:[--LOAD]
arg_009:["Intonation]
arg_010:[with]
arg_011:[extra]
arg_012:[spaces"]
arg_013:[--SEND]
arg_014:[/FILE]
arg_015:["Test"]
arg_016:[--EXIT]

W:\>
引文转义的简化

W:\>type 56190749.cmd
vcCmdLine.exe --SET SYNTH 117^
              --LOAD /MAPPING "My mapping"^
              --LOAD "Intonation        with extra spaces"^
              --SEND /FILE "Test"^
              --EXIT
W:\>56190749.cmd

W:\>vcCmdLine.exe --SET SYNTH 117              --LOAD /MAPPING "My mapping"              --LOAD "Intonation        with extra spaces"              --SEND /FILE "Test"              --EXIT
cmdline:[vcCmdLine.exe  --SET SYNTH 117              --LOAD /MAPPING "My mapping"              --LOAD "Intonation        with extra spaces"              --SEND /FILE "Test"              --EXIT]

arg_000:[vcCmdLine.exe]
arg_001:[--SET]
arg_002:[SYNTH]
arg_003:[117]
arg_004:[--LOAD]
arg_005:[/MAPPING]
arg_006:[My mapping]
arg_007:[--LOAD]
arg_008:[Intonation        with extra spaces]
arg_009:[--SEND]
arg_010:[/FILE]
arg_011:[Test]
arg_012:[--EXIT]

W:\>
如果参数中需要双引号,那么我们可以使用

W:\>type 56190749.cmd
vcCmdLine.exe --SET SYNTH 117^
              --LOAD /MAPPING "\"My mapping\""^
              --LOAD "\"Intonation        with extra spaces\""^
              --SEND /FILE "\"Test\""^
              --EXIT
W:\>56190749.cmd

W:\>vcCmdLine.exe --SET SYNTH 117              --LOAD /MAPPING "\"My mapping\""              --LOAD "\"Intonation        with extra spaces\""              --SEND /FILE "\"Test\""              --EXIT
cmdline:[vcCmdLine.exe  --SET SYNTH 117              --LOAD /MAPPING "\"My mapping\""              --LOAD "\"Intonation        with extra spaces\""              --SEND /FILE "\"Test\""              --EXIT]

arg_000:[vcCmdLine.exe]
arg_001:[--SET]
arg_002:[SYNTH]
arg_003:[117]
arg_004:[--LOAD]
arg_005:[/MAPPING]
arg_006:["My mapping"]
arg_007:[--LOAD]
arg_008:["Intonation        with extra spaces"]
arg_009:[--SEND]
arg_010:[/FILE]
arg_011:["Test"]
arg_012:[--EXIT]

W:\>

当然scala.exe可能有一些特殊的行为,但这是开始尝试的一种方法。

我已经联系了Manuel Op de Coulcoul@huygens-org和他的网站发布了一个新版本的Scala,解决了我的问题,现在代码也更加简化了

scala.exe   --SET SYNTH 117^
            --LOAD/MAPPING "My mapping"^
            --LOAD "Intonation        with extra spaces"^
            --SEND/FILE "Test"^
            --EXIT

你的答案是正确的,@Squashman

如果引号是参数的一部分,则使用-LOAD\intoation加空格“^else只需删除引号转义反斜杠。我同意上述评论。我根本没想到有必要逃避任何双引号。如果所有参数都作为一个长双引号字符串传递给scala,则更有可能需要将它们作为内部双引号转义。@RiccardoLaMarca,什么不起作用。你有两件事要尝试。我在文档中没有看到任何关于使用反斜杠的内容。我在开发者网站上读到的文档中根本没有提到任何关于使用反斜杠的内容,而是说应该引用文件名来保护特殊字符。因此,使用K.I.S.S.类比,我会使用-LOAD/MAPPING C:\my path\my map.kbm和-LOAD C:\my path\my scale file.scl从网站:如果有问题,请联系作者。Scala由荷兰的Manuel Op de Coul创建。电邮:coul@huygens-不幸的是,福克不工作。我会像壁球手建议的那样联系自动售货机。无论如何谢谢你