2016-10-29 2 views
-1

Ich versuche, ein Programm unter Windows 10 mit Visual Studio 2015 zu erstellen, die bestimmte Dateien an bestimmte Speicherorte einfach verknüpfen würde. Ich versuche, eine Textdatei mit dem Speicherort der Dateien und dem zu verwendenden Sim-Link-Ziel zu erstellen. So verwenden Sie Dateizeichenfolgen als Befehle in C++

Dies ist ein Beispiel der Dateidaten, die in der Datei properties.txt wäre:

Filelocation: "Z: \ Folder \ datei.txt"

FileMkdirLocation: „Z: \ Folder2 \ file.txt“

ich möchte wie system(mkdir "sim-link_file_location" "file_location") etwas verwenden, indem die Daten zu ändern, die in properties.txt ist. Ich möchte in der Lage sein, mehr als 1 Datei hinzuzufügen, ohne das Programm neu zu kompilieren und jeden Befehl für jede Datei einzeln zu schreiben.

Das Problem ist, dass ich nicht weiß, wie die Befehle die Daten in der Datei verwenden.

EDIT: Ich habe es geschafft, einen Weg zu finden, aber ich bekomme Fehler beim Kompilieren des Programms. Ich benutze diesen Code:

#include <iostream> 
#include <fstream> 
#include <string.h> 
#include <stdlib.h> 

using namespace std; 

//initialization of Properties File used 
ifstream PropertiesFile ("PropertiesFile.txt"); 

int main() 
{ 
    //initialization of variables used 
    int input_option; 
    char FileLocation[256], Command[]="mklink "; 
// string FileLocation, Command; 

    PropertiesFile >> FileLocation; 

/* switch (input_option) 
    { 
    case "add all mods": 
    } 
*/ 

    cout << "FileLocation: " << FileLocation; 
    cout << endl; 

    strcat(Command, FileLocation); 
    Command[strlen(FileLocation)] = '\0'; 

    cout << Command; 
    cout << endl; 

    //system(command); 

    system("pause"); 
    return 0; 
} 

Ich weiß, dass ich noch nicht alle Variablen verwendet habe. Es sagt mir, dass „strcat“ veraltet und stattdessen „strcat_s“ zu verwenden, und wenn ich es mit, dass ersetzen, erhalte ich

„Debug Assertion Failed - Ausdruck: (L“ Puffer ist zu klein“& & 0)“

+0

Was ist wieder deine Frage? –

+0

Ich habe es vor einer Sekunde bearbeitet. Ich weiß nicht, wie man anstelle von "sim-link_file_location" die Daten verwendet, die in der Datei properties.txt geschrieben werden. – TermoZour

+0

Bitte erklären Sie, was 'sim-link' bedeutet - nicht _symlink_? – greybeard

Antwort

0

Ich musste das "Befehl" Zeichen größer als "FileLocation" machen, da dann strcat_s den Inhalt nicht kopieren konnte. Danach funktionierte das Programm gut und es gab keine anderen Assert-Fehler.

-2

der Befehl einen Softlink in linux zu erstellen ist: ln -s <source> <destination> Sie dies in einem system(""); Anrufs nutzen können, aber bevor Sie in Ihrem Code fortfahren, werden Sie sicher, dass der Kernel fertig machen müssen Ausführen dieses Befehls.

Danach können Sie den Link lesen, als ob es die ursprüngliche Datei war.

+0

OP verwendet leider Windows, nicht Linux. –

+1

Und das würde seine Frage nicht einmal beantworten, wenn er Linux benutzen würde. –

Verwandte Themen