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, 7662 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Windows Server
gelöst Freigegebener Ordner "Eigene Dateien" (8)

Frage von JensDND zum Thema Windows Server ...

Windows 10
Löschen von Ordner mit Dateien (3)

Frage von jerry32 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...