Windows 的奇怪问题:Qt 5.15.2

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

平台 Qt 5.15.2 Windows。

我有一个使用此代码的函数:

QString commstr = "c:/temp/cpath.bat";

QProcess::startDetached("cmd.exe", QStringList() << "/c" << "start" << commstr);

bat文件:

echo off
set PATH=%PATH%; more paths added here ...

它会打开一个控制台并运行

QString commstr
中包含的 .bat 文件。 bat 文件对路径进行临时更改,然后完成,使控制台保持打开状态以供进一步的用户交互。效果很好,正如预期的那样。

这里有一个奇怪的问题:如果用户 ID 嵌入了空格,即“joe user”,则 .bat 文件不会运行。控制台打开,但

commstr
从未执行。我一生都无法弄清楚为什么用户 ID 在这里很重要。

我无法想象用户 ID 在其中扮演什么角色。代码中未引用用户的主目录(例如“C:\Users\joe user”),程序也未安装在那里。该程序无论如何都不会出现其他嵌入空间目录的问题(例如“C:\Program Files”)。

c++ windows qt batch-file userid
1个回答
0
投票
 QProcess::startDetached("cmd.exe", QStringList() << "/c" << "start" << ""  << "/path/to/file.bat");

添加空标题字符串作为开始后的第一个参数解决了我的问题。

Syntax
      START "title" [/D path] [options] "command" [parameters]

Key:
   title       Text for the CMD window title bar (required.)
   path        Starting directory.
   command     The command, batch file or executable program to run.
   parameters  The parameters passed to the command.```

© www.soinside.com 2019 - 2024. All rights reserved.