C# Neuen Ordner erstellen in Pfad mit eingebetteten Variablen

freak1051

Ensign
Registriert
Dez. 2012
Beiträge
198
Hallo Community,

ich möchte ein kleines Tool schreiben.

Folgende Ordnerstruktur besteht schon:

D:\Projekte\52.1xx\52.101\322 Elektro\Software\Peripherie

Insbesondere geht es um den teil "52.1xx" und "52.101". Der erste Teil des Pfades gibt eine Untersortierung an. Hier gibt es also Unterorder von 49.0xx bis 62.9xx. Hinter Jedem Ordner verstecken sich 100 Weitere Ordner mit dem ersten Nummernkreis als führende stellen: 52.001 - 52099.

Der Benutzer des Tools gibt eine Nummer ein. Über Substring habe ich die 2 Zahlen vor dem Punkt ausgelesen, die eine Ziffer nach dem Punkt und alle 3 Ziffern nach dem Punkt und alles als Variablen abgelegt:

Code:
 string sMaschinenkreis = tbMaschinennummer.Text.Substring(0, 2);
 string sMaschinennummer = tbMaschinennummer.Text.Substring(3, 3);
 string sMaschinennummerErste = tbMaschinennummer.Text.Substring(3, 1);

Nun würde ich gerne einen Neuen Ordner mit dem Namen "LSB" in dem Ordner Peripherie erstellen. Das ganze natürlich abhänig von der eingegebene Projektnummer.

Code:
Path.Combine(@"D:\Projekte\52.1xx\52.101\322 Elektro\Software\Peripherie",LSB);

System.IO ist aufgerufen.

Mein erster Gedanke war, ich könnte ja den Pfad Aufbrechen:

Code:
(@"D:\Projekte\"+sMaschinenkreis+"."+sMaschinennummerErste+"xx\"+sMaschinenkreis+"."+Maschinennummer"\322 Elektro\Software\Peripherie",LSB)

Wenn ich so den Pfad Aufbreche, erkennt Visual Basic mit den Pfad bis zu Projekte. Compiliert bekomm ich den Code soweiso nicht weil er meist die \ als "enter" ansieht und eben es nichtmehr als Pfad anerkennt.

Gibt es Möglichkeiten auf diese Art und weiste einen Pfad mit Variablen zu Füttern um mit der einmaligen eingabe der Projektnummer in das zugehörige Verzeichnis einen neuen Ordner zu legen?

vielen dank schon mal im VOrraus
 
Kannst du alles mit Path.Combine machen. LSB ist eine Variable oder?

Code:
Path.Combine(
        @"D:\Projekte",
        String.Format("{0}.{1}xx", sMaschinenkreis, sMaschinennummerErste),
        String.Format("{0}.{1}", sMaschinenkreis, sMaschinennummer),
        @"322 Elektro\Software\Peripherie",
        LSB
);

@Boron: Durch das @ am Anfang des Strings braucht mal \ nicht escapen.
 
Zum Parsen von Zahlen kannst du auch Regular-Expressions nehmen, dann geht das alles leichter.

Oh und noch ein guter Tip: Stell dein .NET Framework auf 4.6.2 um, damit du die Pfadlängenbeschränkung von max. 260 Zeichen aka MAX_PATH nicht mehr hast. Das ist wichtig, wenn deine Ordner sehr tief gehen oder lange Namen haben!
 
Zuletzt bearbeitet:
Du kannst auch String Interpolation nutzen:

Code:
var path = $@"D:\Projekte\{sMaschinenkreis}.{sMaschinennummerErste}xx\{sMaschinenkreis}.{Maschinennummer}\322 Elektro\Software\Peripherie\{LSB}";
 
Siehe Titel, c# ;)
 
Auf was oder wen bezieht sich das?
 
Soweit ich mich belesen habe, golt das hinter dem @ nicht als string sondern als Pfad. und da hat der Compiler kein stress mit einem einzelnen \.
Wenn ich allerdings die Anführungszeichen geschlossen habe, hat er auch den Pfad geschlossen, und da hinter galt alles als String...
Ergänzung ()

Nein LSB soll der zu erstellende Zielordner werden. Er soll mit diesem Befehl hinter dem Variablen Pfad im Ordner Peripherie den Ordner LSB erstellen.
 
Dann einfach noch ein @ setzen.

Code:
var path = @"C:\bla\" + variable + @"\weiterer\pfad\danach"
 
Zurück
Oben