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

问题描述 投票:0回答:4

问题是在具有空格的文件夹中 报价必须在那里。

trone this:

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

这是一个链接,您可以看到所有逃脱字符
http://www.robvanderwoude.com/escapechars.php

command-line parameter-passing filepath argument-passing double-quotes
4个回答
15
投票

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

在窗户中,您不必逃脱报价。只是正常使用它们。
在这种情况下:

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


3
投票

最终,我所需要的只是报价。

winrs -r:MACHINE001 ""C:\Program Files\MyApp\My App.exe" -x "LOTS OF PARAMETERS""

使用CMD(命令提示)运行程序涉及逃避“内部参数”。

examples

以下命令按预期工作(考虑内部引号):


1
投票

以内部引号的参数到批处理处理器的行为有所不同(信用为

tormod
):

0
投票
the是证明CMD的最后一个例子,如预期的那样通过参数(信用为

rafajaques

):

> cmd /c echo ""C:\space folder\run.bat" && echo "C:\space folder\input.txt"" ""C:\space folder\run.bat" && echo "C:\space folder\input.txt"" > cmd /c echo "C:\space folder\run.bat" && echo "C:\space folder\input.txt" "C:\space folder\run.bat" "C:\space folder\input.txt"

警告
警告是通过命令行参数分为三个步骤:

父进程决定了什么,有多少参数

要通过。

参数是二进制数据(ASCII / UNICODE)。

子过程
诠释和
商店

收到的参数。

,例如,在
    cmd /c "echo something "" fishy "" here"
  1. 中传递了以下参数,这次将实际字符表示为二进制数据(ASCII代码):

    /c

  2. echo something " fishy " here
  3. 当CMD解释这些参数并遇到这些参数时,它将其余的参数与“”相连,然后使用批处理处理器作为单个命令运行。这有效地显示:

    /c
  4. 请注意,当参数转换为二进制数据时,将删除结尾。

    以下是连接的,没有任何错误: something "" fishy "" here 注意

    > cmd /c "echo something " /c fishy " here" something " /c fishy " here
  5. 命令还打印直到遇到命令断路器,例如管道
echo

或叉

|
。 另一方面,批处理处理器
商店
根据“”逃脱和空格字符分裂。这有效地将参数转换回了其原始版本。使用
&&
示出了以下参数(请注意尾声“这次):
file.bat

Mastering引号

最后一个问题仍然存在:该示例呢?
> file.bat /c "echo something "" fishy "" here"
/c
"echo something "" fishy "" here"

这里,这只是人类思想的限制:)很容易弄清第一个“是一个长期论据的开始,而第二个则是有效地关闭它的,因为它没有加倍。然后,这一论点像往常一样继续,直到第一个空格角色为止。这是正确的脚本:

> file.bat ""C:\space folder\run.bat" "C:\space folder\input.txt"" ""C:\space folder\run.bat" "C:\space

一个参数
areceived

AS:

> file.bat """C:\space folder\run.bat"" ""C:\space folder\input.txt"""
"""C:\space folder\run.bat"" ""C:\space folder\input.txt"""
lastly,批处理处理器或CMD实用程序后面的脚本引擎,可互换存储字符数据并命令。这是脚本语言的真正目的:混合数据和实用程序。考虑以下内容:
"C:\space folder\run.bat" "C:\space folder\input.txt"
我确定最后一个示例更适合C/C ++开发人员,在CMD和批处理处理器的时代,这足够了:)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.