WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Ordnernamen variabel Vergeben

 

Don Iglos
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 18:05     Titel: Ordnernamen variabel Vergeben
  Antworten mit Zitat      
Moin Moin,

Ich versuche momentan Ordner mit MATLAB zu erstellen.
Das funktioniert soweit auch wie gewollt.

Code:
%Hier gebe ich den Ordnernamen noch manuell ein.

pfad=['C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade1'];
     mkdir(pfad);
     if ~exist('Blade1','dir');
     dos('mkdir C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade2');
         if ~exist('Blade2','dir');
         dos('mkdir C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade3');
         end
     end
 


Ich möchte jetzt allerdings die Unterordner Blade* so erstellen, dass ich nicht jedes Mal einen Ordner manuell erstellen muss, sondern, dass das über eine for-Schleife geregelt wird. Dadurch müsste ja auch die zweite if-Schleife entfallen.

Sagen wir n=37, dann soll mir das Programm n-1, also 36 Ordner erstellen, die er dann dementsprechend "Blade1","Blade2",...,"Blade36" nennt.

Ich weiß momentan nicht, wie ich den Namen ändern könnte.
mit sprintf funktioniert das so weit ich weiß ja nicht...

Ich freue mich, wenn mir jemand helfen kann und möchte.

Danke schonmal im Voraus!
Smile
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2015, 18:16     Titel:
  Antworten mit Zitat      
Zitat:
mit sprintf funktioniert das so weit ich weiß ja nicht...

woher bezihst du dieses wissen?
Code:
dos(sprintf('mkdir D:\\blade%i',5));
geht bei mir ohne probleme
allerdings weis ich nicht warum du dos benutzt wenn es in matlab doch mkdir gibt
außerdem solltest du dir mal fullfile angucken um plattform unabhängig zu werden. wobei das wahrscheinlich egal ist da du ja mit c: etc arbeitest
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Don Iglos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 18:37     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.

Wenn ich jetzt deinen Code auf meinen Pfad anwende, müsste er mir eigentlich den Ordner Blade5 anlegen.

Code:

 mkdir('C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade1');
     if ~exist('Blade1','dir');
     dos(sprintf('mkdir C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade%i',5));
     end
 


Stattdessen gibt mir MATLAB allerdings folgende Warnung:

Warning: Control Character '\U' is not valid. See 'doc sprintf' for control characters valid in the format string.
> In Videoboro at 62
Ein Unterverzeichnis oder eine Datei mit dem Namen "C:" existiert bereits.

Wo habe ich denn da den Fehler eingebaut?
Wenn ich den Code so lasse, wie du gesagt hast, legt er ihn mir einfach in C an. Das möchte ich aber nicht. Der Pfad sollte schon wie oben angegeben aussehen.

Du sagtest, es sei einfacher den mkdir-Befehl zu nutzen. Könntest du mir da eine Möglichkeit zeigen? Wäre natürlich besser, wenn ich dadurch Rechenaufwand sparen könnte.

Danke


Wenn ich das jetzt variabel anwenden möchte, müsste ich dann die 5 durch ein i ersetzen und die for-Schleife beispielsweise von i=1:5 laufen lassen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2015, 18:41     Titel:
  Antworten mit Zitat      
Zitat:
Wo habe ich denn da den Fehler eingebaut?

lies mein beispiel nochmal genauer. ich hab da keinen tippfehler mit dem \\ gemacht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Don Iglos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 18:50     Titel:
  Antworten mit Zitat      
Perfekt!

Vielen Dank für die Hilfe!

Bei mkdir habe ich immer nur ein einzelnes \ gebraucht, deswegen dachte ich, dass das eventuell ein Tippfehler war.
Hier muss man für jeden Unterordner dann \\ nutzen.

Vielen vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2015, 18:53     Titel:
  Antworten mit Zitat      
das hat nix mit mkdir zu tun sondern mit sprintf . steht aber auch in der docu dazu
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.07.2015, 12:27     Titel:
  Antworten mit Zitat      
Hallo Don Iglos,

'\' in den Strings von sprintf und fprintf sind eine sehr beliebte Fehlerquelle. Das betrifft auch die Meldungen von error und warning .
Deshalb immer den String, in dem Backslashes vorkommen können mit %s einbinden:
Code:
dos(sprintf('mkdir %s%i', 'C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade', 5));


Noch ein paar Anmerkungen:
Code:
mkdir('C:\Users\besitzer\Desktop\MatlabCodes\Stufe\Blade1');
if ~exist('Blade1','dir')

Sehr tückisch!!!
Erstens gibt mkdir einen Status zurück, mit dem man den Erfolg viel besser beurteilen kann. Zweitens such exist(Name, 'dir') nach diesem Ordner irgendwo Im Matlab Pfad und im aktuellen Ordner. Das ist also wegen des relativen Pfad-Namens eventuell falsch.

Zitat:
Warning: Control Character '\U' is not valid. See 'doc sprintf' for control characters valid in the format string.

Und? Bist Du dem Ratschlag gefolgt und hast doc sprintf gelesen? Matlab's Medlungen sind sehr hilfreich! Immer gut durchlesen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.