批量删除字符串中双引号的正确方法

时间:2019-05-02 08:19:59

标签: windows batch-file double-quotes

我有一个批处理脚本(app1.bat),它调用了另一个批处理脚本(app2.bat),该脚本本身在Windows中调用了一个程序(program.exe)。

app2.bat以这种方式在标志后使用参数调用program.exe:

program.exe -f Parameter with whitespaces coming into the program 

我想做的是将来自program1.bat的program.exe短语传递到app2.bat中,但是我不知道如何正确处理双引号。目前,我正在用双引号将短语从app1.bat传递到app2.bat,并在app2.bat内(在执行program.exe之前)将这样的引号删除:

在app1.bat内部

call app2.bat "Parameter with whitespaces coming into the program"

在app2.bat内部

    set old_phrase=%1%
    set new_phrase=%old_phrase:"=%
    program.exe -f %new_phrase% 

old_phrase是

"Parameter with whitespaces coming into the program"

我最终得到的new_phrase是

Parameter with whitespaces coming into the program 

是否有任何标准方法来处理这种情况(正在将字符串传递给外部程序,该程序希望在不使用引号的情况下进行调试,并且可以使用空格,而批处理则不允许使用不带引号和空格的字符串)< / p>

1 个答案:

答案 0 :(得分:2)

当您从call /?执行cmd来启动帮助时,您将会看到%n的扩展 第一个陈述:

%~1         - expands %1 removing any surrounding quotes (")

因此,您可以转储所有其他set命令,并只需在批处理文件中运行它即可:

program.exe -f %~1