system("attrib +h C:\\Pfad");
-
Hallo!
Ich habe eine Frage, und zwar:
Kann man bei dem folgenden "attrib"-Befehl als Pfad auch irgendwie einen
"String" mitgeben?
Also irgendwie so:system("attrib +h %s, &pfad");
Vielen Dank für eine Antwort!
lg. rrr
-
Nein, musst du vorher zusammenbasteln.
Mit strcpy(), strcat() oder mit sprintf()
-
oder eine entsprechende mySystem () Funktion dazu basteln, die funktioniert wie printf, nur für system Statt Ausgabe
-
Warum der Formatspezifizierer - das ist kein printf. system erwartet nur einen String als Argument:
const char* arg1 = "attrib +h "; const char* path = "mypath\n"; size_t len1 = strlen(arg1); size_t len2 = strlen(path); size_t len = len1 + len2 + 1; char* args = malloc(len); strcpy(args, arg1); strcpy(&args[len1], path); args[len] = '\0'; system(args); free(args);
Das alles ist dahingerotzt und ungetestet (sollte man in C nie machen), da es sehr viel einfacher mit der passenden Api-Funktion geht.
-
Argh, path sollte eigentlich wieder mit
const char* path = /*wahtever*/;
ersetzt werden,, ich hatte es doch noch vorsichtshalber kurz getestet...
Wie dem auch sei, schau dir den Link an, diese Funktion ist in jedem Fall vorzuziehen.
-
const char* arg1 = "attrib +h "; const char* path = "mypath\n"; // Seit wann ist \n im Pfad erlaupt ? size_t len1 = strlen(arg1); size_t len2 = strlen(path); size_t len = len1 + len2 + 1; char* args = malloc(len); strcpy(args, arg1); strcpy(&args[len1], path); // Dafür gibt es strcat(args, path); args[len] = '\0'; // Das machen selbstverständlich strcat und strcpy system(args); free(args);
-
Wenn ich folgendes ausführe
const char* arg1 = "attrib +h "; const char* mypath = path; size_t len1 = strlen(arg1); size_t len2 = strlen(mypath); size_t len = len1 + len2 + 1; char* args = malloc(len); strcpy(args, arg1); strcpy(&args[len1], path); //args[len] = '\0'; system(args); free(args);
kommt der Fehler
Parameterformat falsch
Kann das an den Leerzeichen im "path" liegen? Wie löse ich das?
Danke und lg.
-
So geht es nämlich. Im String ist nun vor und nach dem Pfad ein (\") angebracht.
system("attrib +h \"C:\\Dokumente und Einstellungen\\max mustermann\\Desktop\\test\\test.log\"");
Aber ich will das ja nicht fix reinschreiben! Ich frage vorher den Usernamen ab und deswegen muss ich mir so einen String zusammenbauen.
Es funkt nur irgenwie nicht!lg.
-
Jetz fällt mir auch noch auf, dass die Nullterminierung fehlerhaft ist (C ist ne Weile her).
Aber wie geschrieben, schau dir GetFileAttributes/SetFileAttributes an.
-
Dann füge doch die " mit in den String ein:
size_t len = len1 + len2 + 1 + 2; // für 2 " char* args = malloc(len); strcpy(args, arg1); strcat(args, "\""); strcat(args, path); strcat(args, "\"");