VBS msgbox meldung nach jeden durchsuchten Ordner und nicht am Schluß

Mitglied: Knuefi

Knuefi (Level 1) - Jetzt verbinden

19.03.2016, aktualisiert 19:29 Uhr, 1627 Aufrufe, 18 Kommentare, 5 Danke

Hallo
da mir immer hier geholfen wurde, wende ich mich mal wieder an Euch. Ich habe ein Script zur Löschung bestimmter Dateien (nach Namen) die über Verknüpfungen in meheren Ordnern gesucht werden.
Problem 1: Die Meldung per msgbox "die Datei gibt es nicht" sollte erst nach Duchsuchung aller Ordner inklusive Unterordner erscheinen, dieses geschieht aber bei jeden Ordner der durchsucht wird und diese Datei nicht beinhaltet. Zudem kommt die Msgbox Meldung "Fertig, Dateien gelöscht" nach jeder einzelne Löschung, die jeweilige Meldung soll natürlich nur einmalig am Ende kommen.

Problem 2: Im Ordner C:Max\test befinden sich mehre Verknüfungen (unterschiedliche Namen) die zu mehren Ordnern (unterschiedliche Namen) in denen sich zwei Unteordner mit den Namen Foto und Musik befinden, diese sollen auch nach der Datei gesucht und gelöscht werden.

Ich es versucht mit:

zweiter Versuch:
beide waren ohne Erfolg, was mache ich falsch?

Gruß
knuefi

[Edit Biber] Codetags, aber die bringen hier nur Zeilennummern. [/Edit]
Mitglied: beidermachtvongreyscull
19.03.2016 um 18:44 Uhr
Problem 1 kannst Du lösen, indem Du den Aufruf der msgbox aus der for/next-Schleife rausnimmst.

Setze Deinen Code bitte in Code-Tags, dann ist er besser lesbar.
Bitte warten ..
Mitglied: Knuefi
19.03.2016 um 19:58 Uhr
Hallo beidermachtvongreyscull,

leider verstehe ich das nicht, ich habe erstmal Versucht nur die Fertig Meldung aus der for next Schleife zu nehmen. So habe ich es probiert:


Leider bekomme ich eine Fehlermeldung
Bitte warten ..
Mitglied: Biber
20.03.2016 um 00:39 Uhr
Moin knuefi,

Zitat von @Knuefi:

Hallo beidermachtvongreyscull,

leider verstehe ich das nicht, ich habe erstmal Versucht nur die Fertig Meldung aus der for next Schleife zu nehmen.

Leider kann ich nicht programmieren.
Aber ich glaube, wenn du die MsgBox() aus der For..Next genommen hättest, dann stünde diese Zeile bestimmt unterhalb der Zeile mit dem Wort "Next", oder?

Meinjanur...

Biber
Bitte warten ..
Mitglied: beidermachtvongreyscull
20.03.2016, aktualisiert um 10:30 Uhr
Zitat von @Knuefi:

Hallo beidermachtvongreyscull,

leider verstehe ich das nicht, ich habe erstmal Versucht nur die Fertig Meldung aus der for next Schleife zu nehmen. So habe ich es probiert:

Obige Zeile startet eine for/nex-Schleife für jede Datei! Dies wird erst mit der "next"-Zeile beendet.
Deswegen wird die obige Zeile bei jeder Datei ausgeführt.
So auch hier.

Leider bekomme ich eine Fehlermeldung

Du musst Dich fragen, was Du ausgeben willst. Wenn Du die Fehlermeldung "Dateien gelöscht" ausgeben willst, wenn Du mindestens eine Datei gelöscht hast, arbeite mit einer Status-Variablen.
Das kann so aussehen:

Bitte warten ..
Mitglied: Knuefi
21.03.2016 um 16:21 Uhr
Hallo beidermachtvongreyscull,

mit deiner Hilfe habe ich es nicht nur hin bekommen sondern auch Verstanden. Danke dafür!!. Nun möchte ich beim nicht Löschen einer Datei, eine Abfrage per MsgBox machen und eine Möglichkeit der neu Eingabe geben. Soweit ist es mir klar womit ich die Abfrage mache, aber wie lasse ich das Script bzw. die Inputbox erneut starten. Mit einer Schleife, wie geht das?

else
Abfrage = MsgBox ("die Datei gibt es im Ordner nicht",vbRetryCancel,"Information")
if Abfrage = vbRetry Then
Bitte warten ..
Mitglied: beidermachtvongreyscull
21.03.2016, aktualisiert um 16:37 Uhr
Du brauchst nicht danken. Ich helfe gerne.
Bitte poste Dein Script nochmal vollständig (bitte in den CODE-Tags - das erleichtert das Lesen.).
Bitte warten ..
Mitglied: Biber
21.03.2016 um 16:46 Uhr
Moin knuefi,

meinst du nicht, du solltest erst mal mit einem kleinen Notizzettel und einem Werbekuli von der CeBit eine Skizze machen, wie denn der Programmablauf geplant ist?

Du brauchst doch einfach nur oberhalb der Zeile
strfile = Inputbox(...)
noch eine äußere Schleife einfügen:

Grüße
Biber
Bitte warten ..
Mitglied: Knuefi
21.03.2016, aktualisiert um 18:54 Uhr
Hallo Biber,
erstmal Danke für deine Hilfe. Irgendwie bekomme ich es nicht hin, ich habe es so verstanden:
Leider geht es nicht.
Bitte warten ..
Mitglied: colinardo
21.03.2016, aktualisiert um 21:27 Uhr
Hallo Knuefi,
ich schau mir das nun schon eine Zeit lang an ... damit das hier mal ein Ende hat und du anscheinend doch noch ziemliche Probleme mit den Grundlagen des Programmierens hast, hier mal ein komplettes kommentiertes Beispiel das all deine Punkte umsetzt.

Was @Biber auch schon angemerkt hat: Mach erst mal eine "vollständige" Skizze deines Vorhabens und erst dann setzt du dich hin und strukturierst das ganze, nicht anders herum.
Hoffentlich lernst du was draus :-) face-smile

Grüße Uwe

p.s. meine dringende Empfehlung sich vielleicht doch erst mal mit den grundlegenden Dingen der Programmierung auseinander zu setzen, anstatt so quer einzusteigen.
Bitte warten ..
Mitglied: Knuefi
22.03.2016 um 16:43 Uhr
Hallo Uwe,

vielen Danke für das perfekt erklärte Script !!!!, nun weiß ich warum die Schleife nicht ging. Dein erstelltes Script ist natürlich noch viel viel viel besser und dieses würde ich gerne nutzen. Wenn ich es richtig verstehe werden alle Verknüpfungen durchsucht, dieses ist aber nicht nötig. Wenn es auf die zwei Verknüpfungen (Foto und Musik) begrenzt werden würde, würde es doch schneller laufen oder?

Problem 2: Im Ordner C:Max\test befinden sich mehre Verknüfungen (unterschiedliche Namen) die zu mehren Ordnern (unterschiedliche Namen) in denen sich zwei Unteordner mit den Namen Foto und Musik befinden, diese sollen auch nach der Datei gesucht und gelöscht werden
Bitte warten ..
Mitglied: colinardo
22.03.2016, aktualisiert um 18:11 Uhr
Das Skript oben durchsucht alles, d.h. alle Unterordner rekursiv und alle Ordner die durch *.lnk Verknüpft wurden ebenfalls rekursiv. Also tutto completto wie man so schön sagt.

Wenn in deinen LNKs nur deine zwei Ordner durchsucht werden sollen, ändere nur die Funktion des oberen Codes so ab:

- edit - Tippfehler behoben
Bitte warten ..
Mitglied: Biber
22.03.2016, aktualisiert um 17:10 Uhr
[OT] @colinardo
In Zeile 14 hast du nach dem Copy&Paste nicht nachgearbeitet....
FindFilesRecursive fso.GetFolder(strTarget & "\Fotos"),strSearch '
-> diese Zeile gibt gab es zweimal, was immer verdächtig ist bei Scriptern, die nicht nach lines per hour bezahlt werden.

So wird dieser Thread
a) nie fertig
b) nie mein Lieblingsbeitrag

aber ich bewundere deine Geduld...

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: colinardo
22.03.2016, aktualisiert um 17:27 Uhr
So wird dieser Thread
a) nie fertig
Bei Minions wird doch sowieso nie was fertig :-D face-big-smile
Bitte warten ..
Mitglied: Knuefi
22.03.2016 um 18:05 Uhr
Leider habt ihr beide Recht :-( face-sad, dieser Thread wird nie fertig. Ich bekomme folgende Fehlermeldung
unbenannt - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: colinardo
22.03.2016, aktualisiert um 18:13 Uhr
Tippfühler ... :-) face-smile. Dachte ein Minion findet den :-D face-big-smile

Na dann noch viel Erfolg Mister Copy n' Paste ....

Grüße Uwe
Bitte warten ..
Mitglied: Knuefi
22.03.2016 um 18:38 Uhr
Zitat von @colinardo:

Tippfühler ... :-) face-smile. Dachte ein Minion findet den :-D face-big-smile

Ich bin erlich, ich habe den Tippfehler immer noch nicht gefunden. Na ja, ich gelobe Besserung. Ich traue mich gar nicht zu fragen, aber nur so kann ich dazu lernen. Was bedeutet das ?: (strTarget & "\" & f). Das &"\" ist mir klar, aber was bedeutet das & f?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 22.03.2016, aktualisiert um 18:49 Uhr
Zitat von @Knuefi:
Ich bin erlich, ich habe den Tippfehler immer noch nicht gefunden. Na ja, ich gelobe Besserung. Ich traue mich gar nicht zu fragen, aber nur so kann ich dazu lernen. Was bedeutet das ?: (strTarget & "\" & f). Das &"\" ist mir klar, aber was bedeutet das & f?

Der Fehler war ein fehlendes & für die Verknüpfung der Variablen in dieser Zeile

Das Konstrukt ist eine einfache ForEach-Schleife die das Array bestehend aus den Strings Foto und Musik durchläuft. In der Variablen f steht dann jeweils entweder Foto oder Musik. Das ist eine Methode um sich mehrfach wiederholenden Codefragmente einzusparen.

Bitte warten ..
Mitglied: Knuefi
22.03.2016 um 19:00 Uhr
Vielen Dank noch mal an alle, ich bewundere eure Geduld :-) face-smile.
@ colinardo: Danke für die ausführliche Erklärung, Top
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Wie sieht eine korrekte IT-Organisation aus?
imebroVor 1 TagFrageOff Topic20 Kommentare

Hallo, da unser IT-Verantwortlicher ja vor einem Jahr gehen musste, stelle ich mir die Frage, wie denn eine korrekte IT-Organisation überhaupt aussehen muss. Zur ...

Server-Hardware
Mini-PC oder Server für Dauerbetrieb
Surfer12Vor 1 TagFrageServer-Hardware20 Kommentare

Hallo zusammen, wir projektieren gerade eine neue Zutrittslösung für ein kleines Hotel mit ca. 20 Zimmern. Die Gäste sollen in Zukunft einen SelfCheckIn machen ...

Firewall
Windows Defender dauerhaft deaktivieren
Frankie222Vor 1 TagFrageFirewall9 Kommentare

Hallo, ich wollte mal fragen ob jemand weiss wie man bei Windows 10 Home den kompletten Schutz deaktiviert. Den Defender und alles! Ich habe ...

Notebook & Zubehör
Funktionieren keine USB-DVD-RW an Surfaces?
StefanKittelVor 1 TagFrageNotebook & Zubehör14 Kommentare

Hallo, ein Kunde von mir hat ein Surface Pro. Wenn er ein USB-DVD-RW-Laufwerk an die Dockingstation anschliesst funktioniert es nicht. - Es bekommt Strom ...

Windows 10
Windows 10 20HS SCCM
stoepsu77Vor 1 TagFrageWindows 1014 Kommentare

Hallo zusammen Ich hoffe, dass jemand von euch mir eine weitere Idee geben kann. Ich habe keine Ideen mehr. Folgendes: Wir haben eine Tasksequenz ...

Suche Projektpartner
Suche Projektpartner
irinaterletska12Vor 1 TagFrageSuche Projektpartner1 Kommentar

Hallo alle zusammen . Wir sind eine ukrainische Firma, die nach dem Projektpartner sucht. Wir können für deutsche Firmen Support geben. Wir können Fernwartung ...

SAN, NAS, DAS
NAS mit Backup Funktion gesucht
YellowcakeVor 1 TagFrageSAN, NAS, DAS8 Kommentare

Hallo zusammen ich bin total unerfahren was diese NAS Systeme angeht die man sich zuhause hinstellen kann. Aktuell habe ich einen kleinen Server hier ...

Windows Server
Wie konvertiere ich NTFS zu GPT
itnirvanaVor 1 TagFrageWindows Server11 Kommentare

Hallo, auf einem Server ist die Platte 2048 GB per NTFS mit vollem Platz erreicht. Wie kann ich nun diese Platte zu GPT konvertieren. ...