2016-04-19 3 views
0

Ich versuche, den Befehl dir /s C:\ /b > temp.txt in meinem Programm zu verwenden. Ich habe es in der Befehlszeile versucht, und es funktioniert immer, aber wenn ich es in meinem Programm versuche, bekomme ich die Dateien und Ordner meines Programms.Wie rufen Sie den `dir` Befehl von Visual C++ ordnungsgemäß auf?

picture

ich Visual C++ und bin mit dem Befehl system("dir /s C:\ /b > temp.txt");. Ich weiß, dass etwas mit meinem Programm nicht stimmt, aber ich weiß nicht was.

+0

Abgesehen: Sie können Ihre eigene programmatisch implementieren, mit Glocken auf: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs. 85) .aspx – kfsone

Antwort

2

nicht ganz klar, was Sie wirklich sind gefragt, aber eine Sache, die ich sicher weiß, ist, dass Sie einen umgekehrten Schrägstrich in einem Zeichenfeld entkommen müssen wörtliche:

system("dir /s C:\\ /b > temp.txt"); 
       //^

bieten Alternativ kann ein raw string literal:

system(R"x(dir /s C:\ /b > temp.txt)x"); 
0

Ihr Problem ist, dass die \ wird aufgefressen. Sie tun müssen:

system("dir /s C:\\ /b > temp.txt"); 

\ bedeutet, Sie versuchen, ein Escape-Zeichen zu verwenden (was Sie nicht tun wollen), so müssen Sie einen zusätzlichen \ geben C zu sagen (oder in Ihrem Fall C++), dass Sie eigentlich ein Literal wollen.

0

Zusätzlich zu dem, was andere über das Escapezeichen gesagt haben, ist das aktuelle Arbeitsverzeichnis, wenn Sie Ihr Programm von Visual Studio ausführen, höchstwahrscheinlich das Verzeichnis, in dem sich das Projekt befindet. Es gibt Einstellungen in den Eigenschaften unter debug, um dies zu ändern, wenn gewünscht, gibt es auch Windows-API-Aufrufe, die Sie vornehmen können, um das aktuelle Arbeitsverzeichnis zu ändern, Verzeichnisinhalte usw. zu erhalten, wenn Sie natives C++ verwenden. Wenn Sie die CLR verwenden, gibt es andere Möglichkeiten, um dasselbe zu erreichen.

using system() ist wahrscheinlich nicht das beste Mittel, um Ihre gewünschten Ergebnisse in einem realen Projekt zu erreichen.

Während die Verwendung der Windows-API zu etwas hässlichem C-Code führen wird, können Sie ihn in eine Dienstprogrammbibliothek einbetten, die Funktionen mit std :: string verfügbar macht.

Hier starten: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx

Verwandte Themen