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

2 Verzeichnisse via Variable vergleichen - als wsh script gesucht

Frage Entwicklung VB for Applications

Mitglied: emperor

emperor (Level 1) - Jetzt verbinden

20.05.2010, aktualisiert 25.05.2010, 6118 Aufrufe, 12 Kommentare

Ich suche ein WSH Script, welches 2 Verzeichnisse vergleicht und einpaar Dateioperationen ausführt

Hallo

ich suche ein wsh skript, welches 2 Verzeichnisse vergleicht.
Ich habe eine Batchdatei im Einsatz, welches aber gerne in wsh haben möchte.

plus:
- Quell- und Ziel pfad in ein Array speichern und dann vergleichen
- Suchen in den Arrays mit und ohne Wildcards (Datei*.*; lo?file*.*, usw.)

- mehrere Zielpfade mit nur einem Quellpfad vergleichen, ohne das Programm fuer jeden Vergleich zu "kopieren".
z.B.
set verz-a=c:\pfade-a
set verz-b=c:\pfade-b
vergleiche

set verz-a=c:\pfade-a
set verz-b=c:\pfade-c
vergleiche
usw ....

Gruss

Anbei mein ursprüngliches "MSDOS Quellcode":
01.
set verz-a=c:\pfade-a 
02.
set verz-b=c:\pfade-b 
03.
 
04.
for /R %pfade-a% %%I in (*.*) do ( 
05.
	for /R %pfade-b% %%J in (*.*) do ( 
06.
		IF .%%~nI%%~xI.==.%%~nJ%%~xJ. ( 
07.
			md doppelt-a 
08.
			robocopy %%I doppelt-a\%%J 
09.
			del %%J 
10.
		)))
[Edit Biber] Codeformatierung um den vermeintlichen "MSDOS Quellcode"/vermutlichen CMD-Batch-Code gesetzt. [/Edit]
Mitglied: Edi.Pfisterer
20.05.2010 um 11:58 Uhr
Hallo!
falls Du statt WHS (googeln brachte an 1. Stelle Wiener Hauskrankenpflege) WSH meinst, also VBS, dann könnte ich Dir helfen.
Vorausgesetzt, ich verstehe Dein Problem. Da meine DOS-Kenntnisse dürftig sind, wäre eine verbale Problembeschreibung hilreich.

lg
Edi
Bitte warten ..
Mitglied: emperor
20.05.2010 um 12:19 Uhr
Hallo

Ja ich meine WSH.
(Soll ich Dir via administrator.de eine priv. Nachricht schicken ?)

Gruss
Bitte warten ..
Mitglied: LotPings
20.05.2010 um 12:48 Uhr
Zitat von Edi.Pfisterer:
Hallo Edi.
also VBS, dann könnte ich Dir helfen. Vorausgesetzt, ich verstehe Dein Problem.
Tue ich auch nicht.
Da meine DOS-Kenntnisse dürftig sind, wäre eine verbale Problembeschreibung hilreich.
Da stimme ich dir auch zu,
Der Batch code ist nämlich erstens sehr ineffizient und kann so für Unterverzeichnisse auch nicht fuinktionieren.
Die innere For /R Schleife ist so eingesetzt absolut Sinnfrei.

Gruß
LotPings
Bitte warten ..
Mitglied: Edi.Pfisterer
20.05.2010 um 13:41 Uhr
Hallo!
da bin ich froh, dass Du nicht die 1. Wiener Hauskrankenpflege brauchst

ein Priv. Nachricht ist natürlich ok, besser ist aber sicher, hier direkt Dein Problem zu schildern, damit derjenige von uns, der gerade Zeit hat und das entsprechende Wissen abzurufen bereit ist, mithelfen kann...
(LotPings ist mir da in der Vergangenheit als Quell des hilfreichen Wissens schon öfter ins Auge gestochen... )

Schildere mal Dein Problem, die Lösung wird nicht lange auf sich warten lassen...

lg
Bitte warten ..
Mitglied: emperor
20.05.2010 um 14:36 Uhr
Also ich zeichne einpaar Radiosendungen aus dem Internet auf (siehe auch SHOUTcast Radio).
Ich habe einpaar Verzeichnisse, wo Musikstücke abgelegt sind, die mir gefallen.
(z.B. Top Hits, Hit 90, usw.)

Wenn ich an meinen PC erneut Musikstücke von den Radiosender abspeichere, will ich die neuen Dateien, nicht mit den bestehenden mischen. Weil manche Files mir nicht gefallen. (die liste ist ca. 5200 Zeilen lang; gibt es auch hier eine bessere Moeglichkeit, als del Dateiname.mp3 zu machen ? )

Nun zu meinem Problem.
Derzeit habe ich eine Batch Routine (u.a. aus dem Internet zusammen gebaut), welches mir diese Verzeichnisse vergleicht. Damit weis ich, ob ich neue und doppelte Musikstücke habe. Die doppelten werden in ein seperates Verzeichnis kopiert das doppelt-radiosender heist.

Da meine Routine nun sehr umfangreich ist, weil ich zeimlich viele Radiosender vergleiche und nun viele Dateien habe, braucht diese auch sehr lange. Die Verzeichnissnamen, uebergebe ich als Variable an die "subroutine".
Meine Kenntnisse in VB/WSH sind eingeschränkt.
Daher meine Frage an die Community mit der Bitte um Hilfe...

Beispiel:
Quelle: c:\musik\radio-okay\Radiosender-A
Ziel:
c:\musik\ungeprueft\Radiosender-A
c:\musik\ungeprueft\Radiosender-B
c:\musik\ungeprueft\Radiosender-C

Bei diesen 3 Zielverzeichnisse, soll er die Doppelten mp3s in die jeweiligen Verzeichnis "doppelt-radio" verschieben. Manche musikstücke sollen auch mittels Wildcard überprüft werden, da die Radiosender sich nicht an den Dateinamen genau halten.
Wie z.B. Hans Meier - Titel.mp3, Hans Meier - Guten Morgen (tv version).mp3.
Beide sind gleich, nur mittels dem Zusatz (tv version) unterscheiden sie sich, als Dateiname.

Soweit okay ?
Bitte warten ..
Mitglied: Biber
20.05.2010 um 15:11 Uhr
[OT]
Moin Edi.Pfisterer,

Zitat von Edi.Pfisterer:
(LotPings ist mir da in der Vergangenheit als Quell des hilfreichen Wissens schon öfter ins Auge gestochen... )

Inhaltlich stimme ich dir ja zu, aber stilistisch sehe ich noch Potentiale.

A propos "Wiener Hauskrankenpflege"...
Mögest du nie wieder wegen Stichverletzungen durch Wissensquellen behandelt werden müssen...

Zählt das eigentlich als Arbeitsunfall?

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: LotPings
20.05.2010 um 15:32 Uhr
[OT]
Zählt das eigentlich als Arbeitsunfall?
OK ok,um keinen Ärger mit der Berufsgenossenschaft zu kriegen, gibts demnächst nur noch etwas stumpfere Tipps
[/OT]
Gruß
LotPings
Bitte warten ..
Mitglied: Edi.Pfisterer
20.05.2010 um 16:50 Uhr
Hallo!
Schutzbrillen sind des Pudels Kern
(geile Vorstellung, oder?)

@ emperor:
ganz durchschaut hab ichs noch nicht...

ich schreib mal, wie ich es verstehe:
du hast bereits n Radiosendungen im Ordner c:\musik\radio-okay\Radiosender-A

und nun besorgst Du dir weitere Sicherheitskopien aus dem Internet und speicherst sie im Ordner
c:\musik\ungeprueft\Radiosender-A
c:\musik\ungeprueft\Radiosender-B
c:\musik\ungeprueft\Radiosender-C

und nun möchtest Du JEDE datei aus dem Ordner c:\musik\ungeprueft\Radiosender-A vergleichen mit dem Inhalt des Ordners c:\musik\radio-okay\Radiosender-A.
Falls es eine Datei gibt, die bereits vorhaden ist, dann soll sie aus dem Ordner
c:\musik\ungeprueft\Radiosender-A
in den Ordner
c:\musik\doppelt-radio
verschoben werden.
Anderenfalls soll die Datei in den Ordner c:\musik\radio-okay\Radiosender-A. verschoben werden.

Das ganze soll dann wiederholt werden mit c:\musik\ungeprueft\Radiosender-B usw.

UND: es soll mit Wildcards gearbeitet werden...

Ist dem so?
Bitte warten ..
Mitglied: Biber
20.05.2010 um 21:27 Uhr
[OT ii]
Moin Edi,

Zitat von Edi.Pfisterer:
Schutzbrillen sind des Pudels Kern
Genial, dann kann ja nichts mehr ins Auge bzw. den Wissensquellbach runtergehen...

Grüße
Biber
[/OT ii]
Bitte warten ..
Mitglied: Edi.Pfisterer
20.05.2010 um 23:47 Uhr
Tja, nun mal im Ernst:

ein erster Ansatz (davon ausgehend, dass ich Dein Problem richtig verstanden habe):
hin_und_her_kopieren.vbs
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
On error resume next 
03.
function ordner(pfad, pfad1) 
04.
wscript.echo pfad 
05.
wscript.echo pfad1 
06.
        Set objFolder = objFSO.GetFolder(pfad) 
07.
 
08.
             Set FileList = objFolder.Files 
09.
                For Each File in FileList 
10.
                   ' Wscript.Echo File.Name & VbTab & File.Size & File.DateLastModified 
11.
                   Liste = liste & File.Name & "?" 
12.
                Next 
13.
 
14.
     RadioOkay = Split(Liste,"?") 
15.
 
16.
wscript.echo "Der Ordner " & pfad & " enthält "& Ubound(RadioOkay)+1 &" Dateien!" 
17.
 
18.
 
19.
 
20.
 
21.
       Set objFolder = objFSO.GetFolder(pfad1) 
22.
 
23.
             Set FileList = objFolder.Files 
24.
                For Each File in FileList 
25.
                kopieren = 0 
26.
                    b=Filter(RadioOkay,File.Name, True, 1) 
27.
                        for each x in b 
28.
 
29.
                              wscript.echo x & " ist bereits vorhanden!" 
30.
                              'objFSO.MoveFile File , "c:\musik\doppelt-radio\" & x 
31.
                              kopieren = kopieren +1 
32.
 
33.
                        next 
34.
 
35.
                        if kopieren = 0 then 
36.
                                Dateiname = right(file, (len(file) - instrRev(file,"\"))) 
37.
                                wscript.echo Dateiname & " würde ich in Radio-Files verschieben!" 
38.
                                'objFSO.MoveFile File , pfad & "\" & Dateiname 
39.
                        end if 
40.
                Next 
41.
 
42.
end function 
43.
 
44.
sender = split("Radiosender-A;Radiosender-B;Radiosender-C",";") 
45.
for i = 0 to UBound(sender) 
46.
call ordner("c:\musik\radio-okay\" & sender(i), "c:\musik\ungeprueft\"  & sender(i)) 
47.
next 
48.
 
Dieses - relativ ungetestete - Schnipsel (relativ, weil nicht mit deinen Pfaden - mit meinen Pfaden funktionierts...) liest in dieser Version nur mal die Dateien aus, damit du sehen kannst, was passieren würde...

(Zur Info: Abbruch der Bildschirmausgabe über den Taskmanager --> wscript.exe beenden! Ansonsten klickst Du dich zu Tode...)

Wenn das so läuft, wie Du es dir gewünscht hast:
Hochkkomma vor den Zeilen, die mit wscript beginnen setzen, damit diese auskommentiert werden, stattdessen
die Hochkomma vor den Zeilen mit 'objFSO.MoveFile entfernen...

Was die Abteilung Wildcards betrifft: bin mir da nicht sicher, wie das funktionieren soll...
Reiner Buchstabenvergleich (zB alle Buchstaben + deren Vorkommen erfassen und miteinander vergleichen) bringts ja nicht wirklich... da wäre ja Stones und Milestones schon sehr ähnlich und WINtEr bzw. WEIN noch ähnlicher (Übereinstimmung von 4 aus 6 Buchstaben, dh ca in etwa fast beinahe 75 % wenn ich meinen Schülern Glauben schenken darf
Teile miteinander zu vergleichen führt zum Stones bzw. Milestones-Problem...
Falls die Übereinstimmungen einem Muster folgen, könnten wir uns allerdings einer Lösung nähern...

Hoffe, etwas geholfen zu haben
lg
Edi

edit:
habe mir nochmal Deine Frage durchgelesen:
Manche musikstücke sollen auch mittels Wildcard überprüft werden, da die Radiosender sich nicht an den Dateinamen genau halten.
Wie z.B. Hans Meier - Titel.mp3, Hans Meier - Guten Morgen (tv version).mp3.
Beide sind gleich, nur mittels dem Zusatz (tv version) unterscheiden sie sich, als Dateiname.
2 Anmerkungen:
ich finde nicht, dass Hans Meier - Titel.mp3, Hans Meier - Guten Morgen (tv version).mp3. gleich sind. Wie soll diese Routine erkennen, dass sich hinter Titel der Song Guten Morgen verbirgt?
Was anderes wäre es, wenn Du vernünftige ID3-Tags in Deinen mp3-files angelgt hast. Überprüf das bitte mal...
Wenn der Eintrag im ID3-Tag bei Titel übereinstimmt, könnten wir das Problem sicher lösen
Bitte warten ..
Mitglied: emperor
21.05.2010 um 11:54 Uhr
ViELEN Dank !!!
Werde das am WE Testen...

Anbei die Verzeichnisse, wie sie bei mir aussehen.
Vielleicht kannst Du bitte das Skript noch so umändern, das z.B. wie bei "c:\musik\uncheck\181.fm - Awesome 80's\doppelt-181.fm - Awesome 80's" die doppelten Files verschoben werden
Am Schluss des Skripts, soll er noch eine Datei in c:\musik\uncheck\181.fm - Awesome 80's\doppelt-181.fm - Awesome 80's und in allen anderen "doppelt-...... " Verz. kopieren..

Hier ein auszug an Radiosender die ich aufnehme. Neue Dateien von den Radiosender wandern in \uncheck\...... wie unten angefuehrt.
Da ich nicht immer Zeit habe, die Files einzusortieren, habe ich nicht nur ein uncheck1 sondern auch uncheck2, uncheck3 usw...

c:\musik\okay\181.fm - Awesome 80's <-> c:\musik\uncheck1\181.fm - Awesome 80's\doppelt-181.fm - Awesome 80's
c:\musik\okay\181.fm - Awesome 80's <-> c:\musik\uncheck1\181.FM - Lite 80's\doppelt-181.fm - Awesome 80's

c:\musik\okay\181.FM - Lite 80's <-> c:\musik\uncheck1\181.FM - Lite 80's\doppelt-181.FM - Lite 80's
c:\musik\okay\181.FM - Lite 80's <-> c:\musik\uncheck1\181.fm - Awesome 80's\doppelt-181.fm - Awesome 80's

copy c:\musik\batch\!Streamriper-ausgabe-del.cmd "c:\musik\uncheck\181.fm - Awesome 80's\doppelt-181.fm\doppelt-ausgabe\ /Y
(also in jedem doppelten Verzeichniss, soll die Datei kopiert werden).

Wildcards
Ich stell mir sowas, wie bei Excel mit der Funktion rechts(Zahl) vor um die entsprechenden Interpreten besser zu finden..
Die mp3 Tags, das geht (noch) nicht, da ich den streamripper von winamp verwenden (msdos version). Damit kann ich mehrere Sender gleichzeitig aufnehmen.
(mehrere streamripper instanzen werden hierzu gestartet)

Gruss und tausend Dank fuer Deine Hilfe
Bitte warten ..
Mitglied: Edi.Pfisterer
21.05.2010 um 12:05 Uhr
Hallo!
Ich vertschüss mich jetzt ins laaange Wochenende...
nur ganz kurz zum Verständnis meines Scripts:

folgende Zeile enthält die Sendernamen:

sender = split("Radiosender-A;Radiosender-B;Radiosender-C",";")

hier kannst Du x-beliebig viele Sender einfügen und durch ; trennen...
Das Skript bastelt dann daraus den Ordnernamen selbständig, dh aus Radiosender-A wird
c:\musik\radio-okay\Radiosender-A
bzw
c:\musik\ungeprueft\Radiosender-A

Falls es doppelt vorkommt, wirds in den Ordner c:\musik\doppelt-radio\ [Zeile 30] geschoben, ansonsten beben nach
c:\musik\radio-okay\Radiosender-A

langer Rede, kurzer Sinn:
Du brauchst nur die Zeile 30 und Zeilen 44 bzw. 46 ändern und das sollte es gewesen sein...

PS: wenn du mir verrätst, wie du dir das vorgestellt hast mit der Funktion rechts(Zahl) [soll heissen, wieviele Zeichen von rechts] dann ist das kein grosses Thema..
und mir machts auch nichts aus, falls das jemand anders hier verändert...
wie gesagt: mein laaanges Wochenende mit AC/DC in Wels morgen Abend sind mir quasi heilig
THUNDER
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Verzeichnisse vergleichen mit Zwischenschritt (22)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Windows 7
gelöst Verzeichnisse per Script erstellen und Dateien dort hinkopieren (2)

Frage von peter58ha zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...