Ordner automatisch aus Ordnernamen erstellen

Zombie1982

bekommt Übersicht
Hi Leute
Ich bin schon seit langem dabei eine Batchdatei zum automatischen Erstellen von Ordnern zu schreiben, krieg das aber überhaupt nicht hin! Anscheinend bin ich nicht für Programmierung geschaffen. Ich habe viele Ordner, die nach "Artist-Album" benannt sind! Die Batch sollte den Artistnamen (also bis zum Bindestrich)auslesen, daraus neue Ordner erstellen und die dazugehörigen Ordner mit rgleichnamigem Artist reinschieben. Dann hätte ich also ganz oben nur noch Ordner mit Artist in denen die Alben sortiert sind....
GEHT SOWAS ÜBERHAUPT???? IS DAS NE HARTE NUSS???
Ich hab ma lange Zeit an ner Vorlage von USER ERNST_42
rumgebastelt...das ist ganz ähnlich...ich kriegs nicht gebacken
(https://www.supernature-forum.de/al...tomatisch-erstellen-und-dateien-kopieren.html)
Kann mir einer helfen??? Kennt jemand ein Programm das sowas kann?
aso....Frohe Weihnachten euch allen
 
Ob das mit ner Batch geht, das weiß ich beim besten Willen nicht mehr - zu lange her.
Auf jeden Fall geht das mit jeder noch so einfachen Basic/Pascal-Programmiersprache. Per Substring-Funktion auslesen usw., alles kein großes Problem. Das Problem ist, dass die alten Basic- und Turbopascal-Versionen wie z.B. QBasic (und das bei mir rumliegende Turbo Pascal 6.0 DOS) unter den heutigen Betriebssystemen nicht mehr richtig laufen.
Aber mit Visual Basic geht das (Freeware Microsoft), genau so wie mit Profan (PROFAN) - auch als Freeware zu bekommen.
In beiden Fällen ist aber lernen angesagt.
 
Herzlich willkommen im Forum, Zombie1982! :)

Die Betriebssystem-Erweiterung http://www.drwindows.de/betriebssystem-erweiterungen/38674-take-command-ersatz-fuer-windows-cmd-exe.html kann die Windows Command-Shell komplett ersetzen und bietet u.a. einen stark erweiterten Befehlsumfang für die Batch-Programmierung.
JP Software: schrieb:
  • Core scripting language - large superset of CMD with 111 commands, 140 functions and 97 internal variables
  • Upgraded CMD commands (e.g. DIR, COPY etc) with hundreds of additional options
  • Complete flow of control structures including IF-Then-Else, DO Loops, Switch, subroutines, batch libraries, etc.
  • Redefine commands through aliasing, create new commands and functions for your regular tasks, even assign frequently used commands to a single keystroke
  • Select or exclude files by date, time, size, and extended wildcards or regular expressions for extraordinary flexibility in file management
Die vielen neuen und erweiterten alten Befehle sowie die Script-Sprache sind gut dokumentiert, sodass die notwendige Einarbeitung nicht zu schwer fällt. Die Lösung Deiner Aufgabe wird damit zum Kinderspiel.

Wenn die vielfältigen Funktionen der grafischen Benutzeroberfläche nicht benötigt werden, ist der Freeware-Teil Take Command Console LE eine gute Wahl und kann die CMD.EXE ebenfalls vollständig ersetzen.

Gruß
Norbert
 
Das Ding hab ich mir auch schon angesehen. Ich hab aber so meine Zweifel, dass man damit nen Substring auslesen kann.

...ich lerne aber gerne dazu :D
 
Hi Bullabeisser, :)

die im Bild gezeigte Hilfe für die Variablen-Funktion @instr ist nur eine von mehreren Möglichkeiten. ;)
Die Batchdatei xren.btm ist ein kleines Beispiel von mir für einen praktischen Einsatz.
 

Anhänge

  • @instr.jpg
    @instr.jpg
    276,8 KB · Aufrufe: 535
  • xren.btm.txt
    655 Bytes · Aufrufe: 295
Hi Zombie1982

zu deinen Fragen:

Sowas ist relativ einfach mit VBScript zu realisieren.
Ich hab mal einen Script für einen vergleichbaren Task programmiert. Mein Programm
sortiert jede Datei eines Verzeichnisses anhand des Namens in ein entsprechendes
Unterverzeichnis, welches bei Bedarf erzeugt wird.

Du müsstest dir die erforderlichen Kentnisse über VBScript aneignen, und dieses Script nur
noch für deine Aufgabe anpassen.

Interesse?
 
Klar doch hätt ich Interesse. Ich hab allerdings noch nie großartig programmiert und die erforderlichen Kentnisse über VBScript aneignen klingt bestimmt leichter gesagt als getan. Ich weiß gar nicht so recht wie und wo ich in diese Materie eintauchen soll!!! Ich peil das halt gar nicht auch wenns ganz logisch sein soll!! Ist denn VBScript was zum einsteigen???
XProfan bin ich auch grad am gucke.....
 
Na das ist Basic, also die Programmiersprache für Einsteiger. Mein Code ist
alles andere als schön und leider nur sehr spärlich kommentiert.
(Die Zeilen, die mit ' beginnen)

Code:
' Dieser Script sortiert Dateien in Unterordner anhand ihres Indexes
'
Dim outstream, fso, sfile, spath, swritefile, sserver, ssrvrdir, continue
Dim foldo, foldname, subfoldcoll, f1, s, sf, deli, filescoll, noc, DoNothing
deli = CHR(34)
r = ""
dupli = 0
moved = 0
Set fso = CreateObject("Scripting.FileSystemObject")
Set sho = CreateObject("Wscript.Shell")
'
Set foldo = fso.GetFolder(".")
Set subfoldcoll = foldo.SubFolders
Set filescoll = foldo.Files
foldname = foldo.Name
continue = sho.Popup ("Sortiert Dateien in Unterordner von " & foldname & "." & vbCrLF & "FORTFAHREN ?", 0, "Proceed ?", vbYesNo)
If continue <> 6 Then Wscript.Quit
' Hauptschleife für alle Dateiobjekte
For Each f1 in filescoll
 DoNothing = False
 s = f1.Name
 fchar = ""
 If InStr(s, ")") > 0 Then
  fchar = Left(s, InStr(s, ")")-1)
  noc = Len(fchar)
  fchar = Right(fchar, noc-InStr(fchar, "("))
 End If
 If fchar = s or fchar = "" Then DoNothing = True
 If Not DoNothing Then
  destfoldname = UCase(fchar)
' erstelle Folder falls nicht vorhanden
  found = False
  For Each sf in subfoldcoll
   If sf.Name = destfoldname Then found = True
  Next
  If Not found Then Set destfolder = fso.CreateFolder(destfoldname)
  If Not (fso.FileExists(destfoldname & "\" & s)) Then
   f1.Move(destfoldname & "\" & s)
   moved = moved + 1
  Else
   dupli = dupli + 1
 End If
End If
Next
' Ende Hauptschleife
r = r & "Bewegt      : " & moved & vbCrLf
r = r & "Duplikate   : " & dupli & vbCrLf
Wscript.Echo r

Eingebaute Funktionen und Befehle fangen mit einem Grossbuchstaben an;
eigene Variablen sind alle klein geschrieben.

http://www.pcwelt.de/downloads/pcwelt_tools/tabellen/28296/script_tutorial/
 
Zuletzt bearbeitet:
Oben