【问题标题】:how start a program in pacticular directory in c++如何在 C++ 中的特定目录中启动程序
【发布时间】:2018-06-11 12:49:40
【问题描述】:

我编写了一个在C:\ 中运行的c++ 程序(program2.exe)。我希望它在C:\Program Files 中运行program1.exe。 我使用

system("start C:\Program Files\program1.exe");

程序启动成功,但是在C:\program2.exe所在的位置)执行,而不是program1.exe所在的位置!

如何解决这个问题?

【问题讨论】:

  • 更改程序中调用system的目录?调用.bat 脚本在执行程序之前更改目录? Create the process to run the program directly而不是使用system,并为该进程设置目录?
  • 想法是不要使用.bat脚本
  • 那你为什么把这个问题标记为“batch-file”?
  • 系统("");有点像批处理文件编程
  • 在命令提示符下输入Start /? 读取使用信息,应该会显示/D 选项!

标签: c++ command-line cmd


【解决方案1】:

这是基于我的评论的未经测试的示例,(使用Start/D 选项)

system("start \"\" /D \"C:\\Program Files\" program1.exe");

为安全起见,有助于包含空格等的可执行文件名称。,也请用双引号括起可执行文件名称。

例如:

system("start \"\" /D \"C:\\Program Files\" \"program 1.exe\"");

【讨论】:

    【解决方案2】:

    请注意,\ 在 C++ 文字中进行了转义,并且必须引用包含空格的路径。

    你的命令应该是

    system("start \"C:\\Program Files\\program1.exe\"");
    

    注意每个\ 是如何加倍的,以及"(以\" 的形式在路径周围添加的形式,因为它包含一个空格字符。

    在你写的形式中,它将被视为

    "启动 C:Program Filesprogram1.exe"

    与您的期望完全不同的含义。

    【讨论】:

    • Start 在这种情况下会看到 "C:\Program Files\program1.exe" 作为标题,为了解决这个问题,有必要引入一个标题,(我的回答是使用一个空的标题"")。另请注意,OP 不是 100% 清楚,但似乎想要运行可执行文件,并将其保存位置作为工作目录,您的答案根本不适合这种情况,(我的答案和我的评论通过使用Start/D 选项来实现)。您还会注意到我的回答,比您的回答早了二十多分钟,也正确地避开了双引号和反斜杠。
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2019-02-07
    • 2021-10-06
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多