Я пытаюсь написать программу, которая запускает другой исполняемый файл в той же папке с некоторыми аргументами, этот exe is pdftotext.exe
из poppler-utils и создает текстовый файл.Запуск exe из другого 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;
}
Возможно, хотите создать процесс не в системе –
@EdHeal, спасибо, я попробовал 'createProcess()', но не повезло, я не очень хорошо понимаю, что означает аргументы для этой функции, особенно последние два, любой пример приветствуется , – wallek876
Множество примеров в Интернете, например https://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx –