【问题标题】:Command line passing quotes within quotes命令行在引号内传递引号
【发布时间】:2016-03-04 22:03:47
【问题描述】:

我一直在寻找解决方案,但找不到。不确定是否可行。

我可以通过命令行执行来传递一个 bat 文件,该文件有一个输入文件作为其参数吗?

所以从命令行看它会是这样的:

C:\run.exe "C:\space folder\run.bat "C:\space folder\input.txt""

问题在于有空格的文件夹,所以 引号必须在里面。

【问题讨论】:

    标签: command-line parameter-passing filepath argument-passing double-quotes


    【解决方案1】:

    试试这个:

    C:\run.exe "C:\space folder\run.bat \"C:\space folder\input.txt\""
    

    这里有一个链接,你可以看到所有转义字符 http://www.robvanderwoude.com/escapechars.php

    【讨论】:

    • 我想过这个,但它不会在最后一个地址位置出错,即它会尝试将 input.txt/ 视为文件夹?
    • 不,它在执行前解析所有行。
    • 啊。不能在 Windows 上也使用 UNIX 风格的目录语法吗?例如。 C:/space\文件夹/run.bat?
    • 是的,acn,但是某些批处理命令无法使用此语法执行。我在这个粘贴时间遇到了一些问题,但我现在不记得了。
    • 我明白了。 +1 顺便供参考。
    【解决方案2】:

    我知道这是一个老话题,但我找到了答案并想分享。

    在 Windows 中,您不必转义引号。正常使用即可。

    在这种情况下:

    C:\run.exe ""C:\space folder\run.bat" "C:\space folder\input.txt""

    【讨论】:

    • 你确定吗?我制作了一个简单的 run.bat 文件,其中包含两行“echo %1”和“echo %2”。然后我将您建议的字符串作为参数传入。第一个参数 %1 显示为 ""C:\space,第二个参数显示为 folder\run.bat" "C:\space
    • echo 可能是一种特殊情况,因为它不是真正基于磁盘的命令,而是内置命令。它可能只是在它之后输出所有内容。
    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多