我试图将cd
导入到一个包含steamcmd.exe
的目录中并运行一个命令。当我运行这段代码时,没有发生错误,实际上什么也没有发生。
use std::{process::Command};
let steamcmd_dir = String::from("C:/Users/user/Desktop/steamcmd");
let content = String::from("steamcmd +login anonymous");
let mut command = Command::new("cmd");
command.arg("/C");
command.arg("cd");
command.arg("/C");
command.arg(steamcmd_dir);
command.arg("/C");
command.arg(content);
command.output().unwrap();
2条答案
按热度按时间oaxa6hgo1#
Command::output()
文档说明:将命令作为子进程执行,等待它完成并收集其所有输出。
SteamCMD的工作原理类似于数据库CLI客户端,您可以使用它的命令行标志交互使用它,也可以使用它的一次性命令。然而,您提供给SteamCMD的标志使它在交互模式下运行,并且根本不退出,所以您需要附加
+quit
,以便SteamCMD在完成时退出,如下所示:您也不一定需要通过
cmd
和cd
找到SteamCMD所在的位置,如果您愿意,您可以直接引用可执行文件:pkwftd7m2#
从docs on
cmd
:要对
<string>
使用多个命令,请使用命令分隔符&&
分隔它们。因此,您可以使用以下代码:
但是,您也可以避免同时使用
cmd
,方法是使用std::env::set_current_dir
更改当前进程的工作目录,然后像在Svenskunganka's answer中那样直接运行steamcwd
: