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

VBScript Dateien nach Ordner sortieren

Frage Entwicklung VB for Applications

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

15.08.2008, aktualisiert 17.08.2008, 7761 Aufrufe, 5 Kommentare

Hallo, ich habe einen Script geschrieben der wenn der Dateinamen ohne Endung=Ordnername ist, die Dateien in den Ordner verschiebt.
Aber er verschiebt die zutreffenden Dateien nur wenn die den Name des ersten Ordners in der Liste haben.

01.
Set FSO=CreateObject("Scripting.FileSystemObject") 
02.
Set DATEIEN=FSO.GetFolder("C:\") 
03.
 
04.
For Each ORDNER In FSO.GetFolder("C:\New").Subfolders 
05.
For Each DATEI in DATEIEN.Files 
06.
FSO.MoveFile "C:\" & ORDNER.Name & ".txt", ORDNER.Path & "\" 
07.
Next 
08.
Next
Gruß waldgnarf
Mitglied: bastla
15.08.2008 um 14:36 Uhr
Hallo waldgnarf!

Zwei Schleifen sind hier zuviel des Guten (Du würdest damit ja jede Datei mit jedem Ordner kombinieren), daher:
01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
For Each ORDNER In fso.GetFolder("C:\New").Subfolders 
03.
    DATEI = "C:\" & ORDNER.Name & ".txt" 
04.
    If FSO.FileExists(DATEI) Then FSO.MoveFile DATEI, ORDNER.Path & "\" 
05.
Next
Allerdings solltest Du noch berücksichtigen, dass "MoveFile" bestehende Dateien (oder auch Ordner mit dem gleichen Namen) nicht überschreiben kann, und daher vorweg eine Überprüfung mit "FileExists" und "FolderExists" für das Ziel sinnvoll wäre.

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
15.08.2008 um 18:19 Uhr
Danke für deine Antwort.

Ich habe es so versucht aber er packt immernoch nur die im Alphabet erste Datei in ihren Ordner.

zum Beispiel so:

abc.txt -> verschieben in Ordner abc
abc.exe -> verschieben in Ordner abc

xyz.txt -> verschieben in Ordner xyz
xyz.exe -> verschieben in Ordner xyz
Bitte warten ..
Mitglied: bastla
15.08.2008 um 18:27 Uhr
Hallo waldgnarf!

Dass keine .exe-Datei verschoben wird, ist klar, da (aufgrund Deines Beispiels) der Dateityp in Zeile 3 mit ".txt" vorgegeben ist - lässt sich aber leicht auf ".*" ändern; damit sollten dann aber alle Dateien erfasst werden, für die es entsprechende Ordner gibt.

Allerdings musst Du dann auf die Überprüfung, ob es eine passende Quelldatei gibt, verzichten und das Fehlen einer solchen durch ein "On Error" abfangen, also
01.
On Error Resume Next 
02.
Set FSO = CreateObject("Scripting.FileSystemObject") 
03.
For Each ORDNER In fso.GetFolder("C:\New").Subfolders 
04.
    DATEI = "C:\" & ORDNER.Name & ".*" 
05.
    FSO.MoveFile DATEI, ORDNER.Path & "\" 
06.
Next
Die saubere Methode, und dann braucht's doch wieder die zweite Schleife, sähe so aus:
01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
For Each ORDNER In fso.GetFolder("C:\New").Subfolders 
03.
    OrdnerName = LCase(Ordner.Name) 
04.
    For Each DATEI In fso.GetFolder("C:\").Files 
05.
        If LCase(fso.GetBaseName(Datei)) = OrdnerName Then 
06.
            If FSO.FileExists(ORDNER.Path & "\" & DATEI.Name) Or _ 
07.
            FSO.FolderExists(ORDNER.Path & "\" & DATEI.Name) Then 
08.
                WScript.Echo DATEI & " kann nicht verschoben werden!" 
09.
            Else 
10.
                FSO.MoveFile DATEI, ORDNER.Path & "\" 
11.
            End If 
12.
        End If 
13.
    Next 
14.
Next
Zum Testen empfiehlt es sich, mit
01.
cscript //nologo "C:\Scriptpfad\Scriptname.vbs"
zu starten - zumindest, wenn es bereits mehrere gleichnamige Dateien in den Zielordnern geben könnte (da bei Verwendung von "wscript" anstelle von "cscript" jede "WScript.Echo"-Anweisung als MsgBox ausgegeben wird) ...

Grüße
bastla

[Edit] Alternative Variante nachgetragen [/Edit]
Bitte warten ..
Mitglied: waldgnarf
16.08.2008 um 01:44 Uhr
Super, es funktioniert Danke sehr.

Gruß waldgnarf
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Exchange Server

Mittels Batch-Script Exchange-Logs sammeln und archivieren

Anleitung von beidermachtvongreyscull zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Verschlüsselung & Zertifikate
SSL Zertifikat für HTTPS (33)

Frage von Hendrik2586 zum Thema Verschlüsselung & Zertifikate ...

Grafikkarten & Monitore
24" oder 27" mit Full HD oder doch mehr Auflösung? (21)

Frage von brutzler zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

Netzwerke
Ip Adressenkonflikt bei Großfamilie (12)

Frage von gunter zum Thema Netzwerke ...