Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Stapelverarbeitung [*.bat-Datei, welche andere *.bat-Dateien wiederum ausführen soll]

Frage Entwicklung Batch & Shell

Mitglied: 45821

45821 (Level 1)

29.03.2007, aktualisiert 02.04.2007, 9231 Aufrufe, 9 Kommentare

Stapelverarbeitung [*.bat-Datei, welche andere *.bat-Dateien wiederum ausführen soll]

Hallo ihr Programmierer!

Ich bräuchte bitte eure Hilfe. Und zwar habe ich folgendes Problem: Ich habe eine kleine Musiksammlung als Backup meiner CD-Sammlung im MP3-Format auf meiner Festplatte. Ich beiss mir schon seit über einem Jahr die Zähne daran aus. Und zwar möchte ich, dass - nach folgendem Schema - ein Skript/Tool/Programm/oder ähnliches meine Ordner durchforstet und diese dann in eine Text-Datei legt. Dazu habe ich ja schon ein nettes Skript. dirlist.bat heisst das gute Programm. Ich möchte aber nicht jedes Mal in den einzelnen Ordner gehen, um dirlist.bat auszuführen.

Ich brauch jetzt also noch - am besten eine .bat-Datei - welche hintereinanderweg alle *.bat-Dateien auf der Festplatte F:\ ausführt. Z.B.:

"musik\a\anton quartet\dirlist.bat"
"musik\b\black sabbath\dirlist.bat"
"musik\cchimaira\dirlist.bat"
....
...
..etc


Dazu wäre es sinnvoll, wenn es eine Konfigurationsdatei gibt (txt-file ist ok), wo ich die Order reinschreiben kann, welche *.bat-Dateien ausgeführt werden sollen (siehe Beispiel). Das würde mir erheblich die Arbeit erleichtern, da ich nicht nur von meiner Musiksammlung einen Überblick haben will, sondern auch von anderen Sachen, wie Office-Dokumente etc... Also, es geht hier um eine Stapelverarbeitung.




2. Problem:

Ich weiß, es gibt Tools wie dirlist.bat, Directory Lister 0.7.2 etc.. aber ich möchte eine *.bat-Datei haben (ich nenne sie jetzt einfach mal *.dirlist2000.bat) , die -nur- die Verzeichnisse listet, in eine *.txt-Datei schreibt. Und zwar nach folgendem Beispiel:

f:\musik\a\dirlist2000.bat


Hier liegt also dirlist2000.bat drinne. Der Ordner

"f:\musik\a\"

enthält aber noch den Unterordner

"anton quartet\album x" und "ali karascha kinh\album y"

Und in der Textdatei nach dem Ausführen der *.Bat-Datei soll dann drinne stehen:

*/zitat anfang/*
anton quartet\album x
ali karascha kinh\album y
*/zitat anfang/*

(Natürlich ohne */zitat anfang/* und */zitat anfang/*)




Es wäre echt cool, wenn ihr mir helfen könntet! Danke!


PS.: Sorry für meine umständliche Aussprache.
Mitglied: miniversum
29.03.2007 um 18:15 Uhr
zu 1.:
Zum Datei erstellen (das Dus ncith mit Hand machen mußt):
dir /b /s dirlist.bat>dirlistbats.txt
Zum Batch Datei zum Starten der einzelnen dirlist.bat:
@for /F "delims=" %%a in (dirlistbats.txt) do call %%a

zu 2:
Hab ich nicht ganz verstanden: Willst Du wissen wie die Unterordner heißen oder der ganze?
Versuch mal ob du das hier meinst:
@for /F "delims=" %%a in ('dir /b /s /ad') do echo %%a>>Verzeichnisse.txt

miniversum
Bitte warten ..
Mitglied: 45821
29.03.2007 um 18:26 Uhr
Hi @ miniversum!

Herzlichen Dank für deinem schnellen Comment!!

Ich bin grad an der Uni an einen Rechner. Da ist leider nichts zu machen mit *.bat-File ausführen und testen und so. Leider! Ich speichere aber diese Website auf meinen USB-Stick und werde es heute abend noch zuhause testen! Und nochmals recht herzlichen Dank!

PS.: Na, es soll halt so aussehen in der erstellten *.txt-file :

artist_x\album_gz\

artist_s\album_fy\

artist_r\album_wi\

...
.. etc..

Kannst du das so machen, dass der Festplattenbuchstabe UND der Ordner \musik\ erst garnicht in die txt-file geschrieben wird? Danke!
Bitte warten ..
Mitglied: miniversum
29.03.2007 um 18:54 Uhr
ah ok dann müste deine .bat so aussehen (ungetestet):
@echo off & enabledelayedexpansion
for /F "delims=" %%a in ('dir /b /s /ad') do (
set verz=%%a
set verz=!verz:%CD%=!
echo !verz:~1!>>Verzeichnisse.txt
)

miniversum
Bitte warten ..
Mitglied: 45821
29.03.2007 um 19:04 Uhr
Cool!

Äähm, ich habe noch was vergessen, Sorry. Kannst du das so machen, dass die Textdatei genauso heißt, wie der Ordner heißt, -wo die *.bat-Datei drinne ist-?

Bsp.:


f:\musik\a\dir\batdatei.bat

///*wird gestartet!* ....


Resultat wäre also diese datei: "a.txt"

f:\musik\a\a.txt


danke!


PS.: Habe aktuelles xp pro, falls das helfen sollte. Hab gelesen, dass es für die Schreibweisen Unterschiedlichkeiten gibt zwischen den einzelnen Windows-Versionen...
Bitte warten ..
Mitglied: Biber
29.03.2007 um 19:15 Uhr
Moin socialbreakz,

willkommen im Forum.

Ich würde miniversums Ansatz weiterspinnen und das ganze einmalig mit einem Einzeiler machen.

Demo am CMD-Prompt:
01.
for /f "tokens=1-3,* delims=\" %i in ('dir /a-d /b /s f:\musik\*.mp3' ) do @echo %l>>"%i\%j\%k\dirlist.txt"
Sieht also ein Ausschnitt der Sammlung so aus
01.
f:\musik\x\artist_x\album_gz 
02.
f:\musik\s\artist_s\album_fy 
03.
f:\musik\r\artist_r\album_wi bla blubb
..würde rausfallen...
01.
echo artist_x\album_gz\Titel eins.mp3 >>"f:\musik\x\dirlist.txt" 
02.
echo artist_x\album_gz\Titel zwei.mp3 >>"f:\musik\x\dirlist.txt" 
03.
echo artist_x\album_gz\Titel drei.mp3 >>"f:\musik\x\dirlist.txt" 
04.
echo artist_s\album_fy\Song A.mp3 >>"f:\musik\s\dirlist.txt" 
05.
echo artist_s\album_fy\Song B.mp3 >>"f:\musik\s\dirlist.txt" 
06.
echo artist_s\album_fy\Song C.mp3 >>"f:\musik\s\dirlist.txt" 
07.
... 
08.
echo artist_r\album_wi bla blubb\Jingle X.mp3 >>"f:\musik\r\dirlist.txt"
Falls das Ganze eine Ebene tiefer hin soll (also die dirlist.txt auf Album-Ebene liegen soll), dann eben die FOR-Parameter etwas hin und her schieben.

Dann kannst Du immer noch bei Bedarf vorher alle vorhandenen dirlist.txt rekursiv löschen (del /s /q f:\musik\dirlist.txt).
Oder einen Batch mit optionalem Parameter "Ab-Unterordner" draus machen:
01.
::----DirList1998.bat 
02.
@for /f "tokens=1-3,* delims=\" %%i in ('dir /a-d /b /s f:\musik\%1\*.mp3' ) do @echo %%l>>%%i\%%j\%%k\dirlist.txt
Aufruf von "DirList1998.bat c" würde dann nur die *.mp3s unterhalb von f:\musik\c\ abfackeln.

Gruss
Biber

[Edit] Gerade dieses hier gelesen:
Resultat wäre also diese datei: "a.txt"
f:\musik\a\a.txt
----> würde bei meiner Variante bedeuten, dass nicht in "%%i\%%j\%%k\dirlist.txt" umgeleitet wird, sondern in "%%i\%%j\%%k\%%j.txt".
[/Edit]
Bitte warten ..
Mitglied: 45821
29.03.2007 um 19:26 Uhr
Cool! Dankesehr für deine umfangreiche Hilfe! Programmieren müsste man können... Kann ich leider nicht, außer ein wenig an php/css/html rumfummeln krieg ich ja auch noch hin. Nagut, dafür mache ich halt Musik

Da sind schon krasse Sachen dabei! Ich freue mich schon, wenn ich zuhause bin!


PS.: Ich muss die zitate in den windows-editor reinschreiben und als dateiname_sowieso.bat speichern, oder?
Ich hab da nochmal ein Frage:...

Gibt es da noch eine batchfile, welche man dann auf f:\ zu liegen hat, welche dann alle geschriebenen Textdateien in ein bestimmten Verzeichnis x reinkopiert? wäre ja mühselig, alle *.txt-files in den jeweiligen Ordner rauszufischen und dann in den Wunschordner zu kopieren (wo dann also alle erstellten *.txt-files drinne sind). Ich mein, ich kriege es bestimmt auch manuell (per Windowssuche) hin, aber so toll ist das ja nun auch wieder nicht.

Wie gesagt, großen Dank für eure Hilfe!

So, mit weiteren Wünschen geh ich euch jetzt hoffentlich nicht mehr auf die Nase
Bitte warten ..
Mitglied: Biber
29.03.2007 um 20:52 Uhr
So, socialbrakz,

um die Restfragen auch noch kurz zu beantworten: Ja. Ja.

Ja. Die Sachen, die miniversum und ich als Batchfragmente hier gepostet haben, per Copy & Paste in einen Editor kopieren, speichern als DenkDirWasKreativesAus.bat und testen.

"Testen" heisst, Du solltest erst einmal diese Anweisungen nur simulieren lassen.
Beispiel: wenn Du miniversums Schnipsel nimmst.
01.
 @for /F "delims=" %%a in ('dir /b /s /ad') do echo %%a>>Verzeichnisse.txt
..der ja in einer Batch laufen soll, dann teste erstmal den wesentlichen Teil am CMD-Prompt
01.
@for /F "delims=" %a in ('dir /b /s /ad') do echo %a
[Am CMD-Prompt haben die Zählvariablen ein Prozentzeichen, im Batch zwei].

Wenn Du mein "DirList1998.bat" testen willst, kopiere Dir folgenden Test-Schnipsel als .bat-Datei:
01.
::----DirList1998Test.bat 
02.
@for /f "tokens=1-3,* delims=\" %%i in ('dir /a-d /b /s f:\musik\%1\*.mp3' ) do @echo @echo %%l^>^>%%i\%%j\%%k\dirlist.txt
Dann siehst Du, was passieren würde und kannst ggf. anpassen.

Zu der Frage mit dem "alle dirlist.txt einsammeln und in anderes Sammel-Verzeichnis kopieren":
Bekommst Du jetzt selbst hin, wenn Du die obigen "FOR /F ...in ('DIR /b /s ...')"-Konstrukte verstanden hast.

Jetzt müsstest Du ja "nur" alle ".txt"-Dateien aus allen Unterverzeichnissen unerhalb von "F:\Musik" in einen anderen Pfad kopieren.
Eventuell solltest Du eine seltenere Extension als .txt verwenden, damit du auch wirklich nur diese Dateien erwischt.
Das wird am CMD-Prompt so etwas wie ...
01.
 For /f "delims=" %i in ('dir /b /s f:\Musik\*.txt') do @copy "%i" "x:\Sammelbecken\%~nxi" 
Du findest einige ähnliche Beispiele hier im Forum in Batch und Shell, auch mit Playlists und vergleichbarem.

Gruss
Biber
Bitte warten ..
Mitglied: 45821
30.03.2007 um 09:45 Uhr
Thx für deinen großen informativen Comment!

Cool! Ich habe gestern abend bis halb 1 noch ein wenig herumexperimentiert und bin schon zum größten Teil zufrieden! Dank euren super Beiträgen!


Ich werde das dann so machen, dass die *.bat-file(s) dann nicht eine *.txt-file erstellt, sondern eine *.html-file wird. D.h. dass da noch irgendwo <header></header>, <body> /der Inhalt, der von der *.bat-file kommt/ </body> <externer *.css-file-link>. etc.. in die *.bat-file reinkommt. Resultat: Es wird also eine korrekte HTML-File erstellt. Diese kann ich dann auf meinen localhost (xampp) kopieren und habe dann eine Art "statische Datenbank", welche ich immer nur mit ein paar *.bat-files aktualieren muss. Genial!

Die zu erstellende HTML-file brauch keinerlei Tabellen (Artist, Album, CD x), zumal das eh zu umständlich ist.

Man könnte natürlich noch (je nach Verzeichnistiefe (depth)) das farblich anpassen. Z.B.: Ordnertiefe 1 (buchstabe x\) = #FF0000
Ordnertiefe 2 (artist x\) = #CC0000
Ordnertiefe 3 (album x\) = #FFFF00
Ordnertiefe 4 (cd x) = #000000

Ist aber ziemlich umständlich, wäre aber optisch reizvoller, als die simple Textdatei.
Bitte warten ..
Mitglied: Biber
02.04.2007 um 07:53 Uhr
Moin socialbreakz,

danke für die Rückmeldung.

Dann gehe Dich davon aus, dass Dein Batch im Laufe der nächsten Zeit noch länger wird...

Ich hoffe jedenfalls, Du postest eine Skizze Deiner Lösung hier als neuen Beitrag bzw. als Tutorial, sobald Du damit zufrieden bist..

Ich setze jetzt allerdings schon mal den Status dieses Beitrags auf "Gelöst" und "Geschlossen, weil ...
... die ursprüngliche Fragestellung mit "...*.bat, die andere *.bat ausführen soll.." ist ja irgendwo nicht mehr im Fokus.

Sollte es noch Nachfragen von Deiner Seite zu dem oben begonnenen Batch geben, dann mache ich gerne auf PN-Aufforderung diesen Beitrag wieder auf.

Ansonsten mach ich hier an dieser Stelle mal einen Schnitt. <----katt----->

Schöne Woche Dir und melde Dich
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst XML-Datei: Pfade suchen, verlinkte Dateien kopieren und Pfade ändern (4)

Frage von ELEVATOR zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei zum verschieben von Dateien aus Unterordnern ? (10)

Frage von Ghostrider1911 zum Thema Batch & Shell ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...