Top-Themen

Aktuelle Themen (A bis Z)

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

Daten nach Kriterien suchen, Verschieben und Überordner löschen.

Frage Entwicklung Batch & Shell

Mitglied: Papp-Nase

Papp-Nase (Level 1) - Jetzt verbinden

27.09.2009 um 13:26 Uhr, 6141 Aufrufe, 7 Kommentare

Wenn man mit Napster Songs runterlädt und anschließend legal überspielt werden alle Lieder, welche nicht nur von einem Interpreten stammen sondern von 2 in extra Ordner gelegt. Um dieses Problem zu beheben wollte ich eine batch-Datei schreiben. Sie soll, da der Albumname der gleiche ist ausfindig machen in welchem Ordner sich weniger Dateien befinden und sie in den Ordner verschieben wo mehr vorhanden sind. Danach den Überordner also den Albumordner und den Interpreten ordner löschen.

Ich habe mir überlegt das dieses Problem mit Batch zu beheben ist. Erst wollte ich es mit C versuchen da ich hier schon einen gewissen Kenntnisstand habe. Allerdings bin ich nicht draufgekommen wie das gehen könnte und so hab ich mich ein bisschen in Batch eingelesen. Das Problem ist das ich nicht genau weiß wie ich das Problem angehen soll, ich würde zuerst Alle Doppelten Ordnernamen suchen müssen. Hierzu müsste das Programm erstmal alle Ordner durchlaufen, die Namen der Unterordner auf Variablen Speichern und sobald 2 namen gleich sind, in diese Ordner gehen und vergleichen in welchem Unterordner weniger Dateien sind, anschließend den Ordner wo weniger drin waren welcher jetzt leer ist inklusive überordner löschen. Es wäre wirklich super wenn mir jemand helfen könnte das zu Programmieren da es jedesmal ziemlich lange dauert das alles von Hand zu machen.

Bild zur Veranschaulichung:
e478eec7da596fe5b9ca2e1572d2b0e9-batchprob1 - Klicke auf das Bild, um es zu vergrößern
Mfg Tommi
Mitglied: miniversum
27.09.2009 um 17:41 Uhr
Vielleicht ein kleiner Ansatz als Hilfe den du verfolgen könntest:
1. Ausgehend vom Grundvereichnis (im Bild "Batch test") suchst du alle Verzeichnisse
(Das wäre dann ungefär so:
FOR /F "delims=" %%i in ('dir /B /AD "C:\Batch test"') do ... %%i
)
2. In diesen Bandunterverzeichnissen jeweils wieder eine Auflistung machen für die Albumtitel
(Das wäre dann ungefär so:
FOR /F "delims=" %%j in ('dir /B /AD "C:\Batch test\%%i"') do ... %%j
)
3. Durchsuche das Grundverzeichnis nach andern Kombinationen der Namen und Albentitel suchen ob diese mehr als einmal vorkommen
(Das wäre dann ungefär so:
set nr=0
FOR /F "delims=:" %%k in ('find /N^|dir /s /B /AD "C:\Batch test\%%i *\%%j"') do set nr=%%k
if %nr% gtr 1 ....
)
Das ist jetzt halt nur ne grobe Skizze auf die Schnelle wie es gehen könnte und mit welchen Befehlen. Für die genaue Referenz der Befehle und Parameter der Befehle bitte selbst nachsehen.
Speichern brauchst du dir jedes Verzeichnis ja nicht, da du über die For-Schleifen, in einander verschachtelt, ein Verzeichnis nach dem andern verarbeiten kannst.

Was mir noch einfällt ist, daß nicht klar ist was passieren soll wenn es z.B. den Fall gibt das es "Band1" und "Band2" jeweils einzeln gibt und dann ein Verzeichnis "Band1 zusammen mit Band2". Wohin soll das dann verschoben werden?
Außerdem könnte es passieren das ein Bandname genau so ist wie ein Teil des Bandnamens einer anderen Band, was dann nicht zu unterscheiden wäre wen nur nach Teilstrings gesucht wird. Da würde dann, wenn du z.B. gerade bei "Pink" bist und nach andern Verzeichnissen mit diesem Namen suchst auch "Pink Floyd" oder "Pink turns Blue" gefunden werden und alles unter "Pink" zusammengeworfen werden. Wenn du allerdings einen Musikgeschmack hast der sowas ausschließt, mach das ja nix aus ;)
Bitte warten ..
Mitglied: Papp-Nase
27.09.2009 um 22:52 Uhr
Zitat von miniversum:
Was mir noch einfällt ist, daß nicht klar ist was
passieren soll wenn es z.B. den Fall gibt das es "Band1" und
"Band2" jeweils einzeln gibt und dann ein Verzeichnis
"Band1 zusammen mit Band2". Wohin soll das dann verschoben
werden?
Außerdem könnte es passieren das ein Bandname genau so ist
wie ein Teil des Bandnamens einer anderen Band, was dann nicht zu
unterscheiden wäre wen nur nach Teilstrings gesucht wird. Da
würde dann, wenn du z.B. gerade bei "Pink" bist und
nach andern Verzeichnissen mit diesem Namen suchst auch "Pink
Floyd" oder "Pink turns Blue" gefunden werden und alles
unter "Pink" zusammengeworfen werden. Wenn du allerdings
einen Musikgeschmack hast der sowas ausschließt, mach das ja nix
aus ;)

danke für die schnelle antwort,
der schritt 3 sollte eigetnlich wegfallen und damit auch deine zusatzfrage, da er ja ausschließlich nach gleichen alben suchen soll. d.h. auch wenn es band 1 und band 2 auch so gibt, haben sie niemals das gleiche album deshalb sollte er auch nur nach gleichen albennamen suchen. damit wär denk ich auch das problem behogen wenn bandnamen gleich klingen.in der for schleife der ersten anweisung müsste ich ja dann etwas schreiben was alle verzeichnisse miteinander vergleicht richtig?
mfg tommi
Bitte warten ..
Mitglied: miniversum
28.09.2009 um 12:43 Uhr
der schritt 3 sollte eigetnlich wegfallen und damit auch deine zusatzfrage, da er ja ausschließlich nach gleichen alben suchen soll. d.h. auch wenn es band 1 und band 2 auch so gibt, haben sie niemals das gleiche album deshalb sollte er auch nur nach gleichen albennamen suchen. damit wär denk ich auch das problem behogen wenn bandnamen gleich klingen.
Naja nicht unbedingt. Einige Bands haben Alben die heißen: "Best of" oder "Greatest Hits".

>in der for schleife der ersten anweisung müsste ich ja dann etwas schreiben was alle verzeichnisse miteinander vergleicht richtig?
Das passiert bei hie rin der dritten schleife:
dir /s /B /AD "C:\Batch test\%%i *\%%j"
Der Parameter /s sorgt dafür das alle Verzeichnisse und unterverseichnisse gesucht werden.

1. Schleife sucht Bandnamen
2. Schleife sucht Albennamen
3. Schleife sucht nach Doppelten (hier müsste halt das umverschieben und löchen der Ordner noch dazu).
Bitte warten ..
Mitglied: Papp-Nase
28.09.2009 um 13:59 Uhr
ja du hsat recht das problem greatest hits tritt wirklich einmal auf..
hab jetz einfach mal probiert mir das auszuplotten aber wenn ich das jetz richtig druchgelesen hab kann batch keine ineiander verschachtelten forschleifen oder?
d.h. die erste for schleife zählt zwar alle durch, hab aber am ende nurnoch den letzten bandnamen drin.
bei:
@echo on
FOR /F "delims=" %%i in ('dir /B /AD "C:\Batch test"') do echo %%i
FOR /F "delims=" %%j in ('dir /B /AD "C:\Batch test\%%i"') do echo %%j
pause
werden zwar die drei bands ausgeworfen nicht aber die dazugehörigen alben. Fehler Datei nicht gefunden.
Bitte warten ..
Mitglied: miniversum
28.09.2009 um 19:37 Uhr
Doch verschachtelte For-Schleifen gehen. Du must sie nur in Klammern setzen:
Das sieht dann so aus:
01.
@echo off 
02.
FOR /F "delims=" %%i in ('dir /B /AD "C:\Batch test"') do ( 
03.
echo Verarbeite Band: %%i 
04.
FOR /F "delims=" %%j in ('dir /B /AD "C:\Batch test\%%i"') do echo Verarbeite Album %%j der Band %%i 
05.
06.
pause
Eine andere Möglichkeit ist die Benutzung von Unterprozeduren die du per Call aufrufen kannst:
01.
@echo off 
02.
FOR /F "delims=" %%i in ('dir /B /AD "C:\Batch test"') do call:Bandproz "%%i" 
03.
pause 
04.
goto:eof 
05.
 
06.
:Bandproz 
07.
echo Verarbeite Band: %1 
08.
FOR /F "delims=" %%j in ('dir /B /AD "C:\Batch test\%%i"') do call:Albumproz %1 "%%j" 
09.
 
10.
:Albumproz 
11.
echo Verarbeite Album %2 der Band %1
Bitte warten ..
Mitglied: Papp-Nase
01.10.2009 um 21:44 Uhr
ahhhja cool. dann sollte das problem auf jedenfall mit batch lösbar sein. danke für die hilfe! ich weiß aber nichmal was das delims heißt, aus diesem grund werd ich mir erstmal ein batch buch ausleihen und mir bissl die grundlagen aneignen. deine ansätze helfen mir jedoch schon sehr weiter. ich denke ich werde noch auf einige probleme stoßen aber jetzt versuch ich erstmal das ding allein zu programmieren. danke für deine hilfe =)
Bitte warten ..
Mitglied: miniversum
01.10.2009 um 21:57 Uhr
Du kannst auch einfach die Hilfe zu den einzelnen Befehlen ansehen indem du in der cmd den Befehl mit dem Parameter /? eingibst, also z.B.
for /?
Beim For befehl ist dann z.B. erklärt das delims ein Trennzeichen angibt. Hier also keins, da sonst Verzeichnissnamen mit Leerstellen nur das erste Wort enthalten würden.
Eine weitere Möglichkeit die Sprache zzu erlernen ist einfach hier im Bereich die Postings und die Anleitungen anzusehen, und halt ausprobieren.
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS Zeilen in Textfile suchen und nur nach erfüllten Kriterien löschen
Frage von Calim3roVB for Applications6 Kommentare

Hallo zusammen Ich gelange wieder mal mit einer Bitte an euch. Kurze Erläuterung: In einem File habe ich Zeichenböcke: ...

Linux
Daten in Ordner verschieben und nach x Tagen löschen lassen
Frage von mclongerLinux29 Kommentare

Hallo an alle, Ich habe ein "Problem" was ich niemals allein lösen kann da mir das Wissen dazu fehlt. ...

Windows Tools
Excel - Import Daten mehrere Kriterien auf Kalenderwoche zuordnen
gelöst Frage von yuki13Windows Tools3 Kommentare

Hallo Zusammen! :) Ich bin ein Frischling auf diesem Forum und gleichfalls in der "Excel-Welt". Ich habe folgendes Problem: ...

Batch & Shell
Logfiles zippen, verschieben, löschen
gelöst Frage von tomscorerBatch & Shell6 Kommentare

Hallo liebe Community. Ich habe mich nun schon etwas im Forum umgesehen, aber irgendwie funktioniert mein Batch nicht so ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 11 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 13 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.