Próbuję uruchomić .exe, który wymaga pewnych parametrów przy użyciu system().System C++() nie działa, gdy istnieją spacje w dwóch różnych parametrach
Jeśli istnieje przestrzeń w ścieżce .exe oraz w ścieżce pliku przekazany w parametrach, pojawia się następujący błąd:
The filename, directory name, or volume label syntax is incorrect.
Oto kod, który generuje ten błąd:
#include <stdlib.h>
#include <conio.h>
int main(){
system("\"C:\\Users\\Adam\\Desktop\\pdftotext\" -layout \"C:\\Users\\Adam\\Desktop\\week 4.pdf\"");
_getch();
}
Jeśli ścieżka "pdftotext" nie używa cudzysłowów (potrzebuję ich, ponieważ czasami katalog będzie zawierać spacje), wszystko działa poprawnie. Ponadto, jeśli umieściłem to, co jest w "system()" w łańcuchu i wypiszę go i skopiuję w rzeczywistym oknie poleceń, to działa.
Pomyślałem, że może mógłbym łańcuch niektóre polecenia wykorzystujące coś takiego:
cd C:\Users\Adam\Desktop;
pdftotext -layout "week 4.pdf"
Więc byłbym już w odpowiednim katalogu, ale nie wiem, jak korzystać z wielu poleceń w tym samym systemie() Funkcja.
Czy ktoś może mi powiedzieć, dlaczego moje polecenie nie działa lub czy drugi sposób, o którym pomyślałem, zadziała?
Edit: Wygląda potrzebowałem dodatkowy zestaw cudzysłowie ponieważ system() przekazuje swoje argumenty do cmd/k, więc to musi być w cudzysłowach. Znalazłem go tutaj:
C++: How to make a my program open a .exe with optional args
więc będę głosować, aby zamknąć jako duplikat, ponieważ pytania są dość blisko, chociaż nie byliśmy dostawanie ten sam komunikat o błędzie, dzięki!
Kto myślał, że wprowadzenie spacji w nazwach będzie „dobry pomysł” powinien zostać zastrzelony. –
Chyba to byłby Microsoft? Wiele rzeczy się zepsuło, gdy praca ludzi zakończyła się na 'C: \ Documents and Settings'. –
Wiem, ale tak naprawdę nie mam wyboru, mam ponad 1000 plików do przeanalizowania i wszystkie mają spacje –