gpt4 book ai didi

c - 从另一个 exe 运行 exe

转载 作者:可可西里 更新时间:2023-11-01 11:27:27 28 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序使用一些参数在同一文件夹中运行其他可执行文件,此 exe 是来自 poppler-utils 的 pdftotext.exe,它会生成一个文本文件。

我准备了一个字符串作为参数传递给system(),结果字符串是:

cd/D N:\folder0\folder1\folder2\foldern && pdftotext.exe data.pdf -layout -nopgbrk

首先进入文件目录,然后运行可执行文件。

当我运行它时,我总是得到

sh: cd/D: No such file or directory

但如果我直接从命令提示符运行该命令,该命令会起作用。

我认为这不重要,但这是我到目前为止所写的内容:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>

// Function to get the base filename
char *GetFileName(char *path);

int main (void)
{
// Get path of the acutal file
char currentPath[MAX_PATH];

int pathBytes = GetModuleFileName(NULL, currentPath, MAX_PATH);
if(pathBytes == 0)
{
printf("Couldn't determine current path\n");
return 1;
}

// Get the current file name
char* currentFileName = GetFileName(currentPath);

// prepare string to executable + arguments
char* pdftotextArg = " && pdftotext.exe data.pdf -layout -nopgbrk";

// Erase the current filename from the path
currentPath[strlen(currentPath) - strlen(currentFileName) - 1] = '\0';


// Prepare the windows command
char winCommand[500] = "cd/D ";
strcat(winCommand, currentPath);
strcat(winCommand, pdftotextArg);

// Run the command
system(winCommand);

// Do stuff with the generated file text

return 0;
}

最佳答案

<罢工> cd是“shell”命令,不是可以执行的程序。

<罢工>

因此,要应用它,请运行一个 shell(Windows 下的 cmd.exe)并传递您要执行的命令。

Do to so m 制作winCommand的内容看起来像这样:

cmd.exe /C "cd/D N:\folder0\folder1\folder2\foldern && pdftotext.exe data.pdf -layout -nopgbrk"

请注意,更改驱动器和目录仅适用于 cmd.exe 使用的环境.程序的驱动器和目录保持在调用 system() 之前的状态。 .


更新:

仔细查看错误消息,您会注意到“ sh: ... ”。这清楚地表明 system()不打电话 cmd.exe ,因为它最有可能不会像这样为错误消息添加前缀。

从这个事实我敢断定显示的代码被调用并在 Cygwin 下运行。 .

Cygwin 提供和使用的 shell 不知道 Windows 特定选项 /D到 shell 命令 cd ,因此错误。

然而,Cygwin 使用的 shell 可以调用 cmd.exe我最初提供的方法有效,尽管我给出的解释是错误的,正如 pmg 指出的那样comment下面。

关于c - 从另一个 exe 运行 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com