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

gelöst VBScript doppelter Dateiname

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

19.08.2008, aktualisiert 20.08.2008, 8538 Aufrufe, 6 Kommentare

Hi ich habe versucht die doppelten BaseDateinamen zu Filtern.
Am Ende sollte ein Ordner erstellt werden wenn ein BaseNamen von einer Datei 2 mal vorhanden ist.
zum Beispiel:
abc.txt
abc 01.txt
-> Ordner abc erstellen
xyz
-> keine Aktion

01.
Set FSO=CreateObject("Scripting.FileSystemObject") 
02.
For Each DATEI01 In FSO.GetFolder("C:\New").Files 
03.
DATEINAME=Left(DATEI01.Name,Len(DATEI01.Name)-4) 
04.
For Each DATEI02 In FSO.GetFolder("C:\New").Files 
05.
If Instr(DATEI02.Name,DATEINAME)>0 Then 
06.
AUSGABE=AUSGABE & DATEI02.Name & VbCrLf 
07.
End If 
08.
Next 
09.
Next 
10.
MsgBox AUSGABE
In dem Script wird der doppelte Dateiname jeh nach Häufigkeit so oft angezeigt wie er im BaseName vorkommt.
Wie kann ich herausfinden ob der BaseName doppelt existiert oder mehrmals und wenn ja den BaseName-Ordner erstellen? Muss ich die Strings aus der AUSGABE Collektion miteinander vergleichen?

Gruß waldgnarf
Mitglied: bastla
19.08.2008 um 02:06 Uhr
Hallo waldgnarf!

Einige Überlegungen zu Deinem Konzept:

  • Zunächst könnte das nur funktionieren (und auch dann nicht mit dieser Version des Scripts), wenn die Dateien in der "Files"-Auflistung sortiert wären (und daher die jeweils kürzeren Dateinamen zuerst kämen) - Du erhältst sie aber in der selben Reihenfolge wie mit einem "dir" ohne Parameter unter CMD.

  • Mit InStr() stellst Du nur fest, ob ein String in einem anderen enthalten ist - daher würde "xyz abc.txt" ebenfalls gefunden werden (könnte aber natürlich auch Deine Absicht sein).

  • Nicht gefunden würde allerdings "Abc" oder "ABC", da Stringvergleiche in VB(S) case-sensitive sind (solange Du nicht explizit mit "vbTextCompare" das Gegenteil festlegst).

  • Da die erste Schleife ja alle Dateien des angegebenen Ordners erfasst, würdest Du mit der aktuellen Fassung einen Ordner "abc" erhalten, aber zB zusätzlich auch noch einen Ordner "abc 01", wenn es etwa noch eine Datei "abc 01.bak" oder "abc 01-alt.txt" gäbe ...
Vielleicht stellst Du kurz dar, wie in etwa der Inhalt des Ordners "C:\New" aussieht, und was genau das angestrebte Ziel ist ...

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
19.08.2008 um 17:21 Uhr
Hi, verschiedene Dateien befinden sich im Ordner /New.
Alle haben einen anderen Namen und oft auch unterschiedliche Endungen. Ich habe versucht mit dem Script zu erreichen das wenn ein Dateiname doppelt vorkommt, ungeachtet von den Endungen oder Zahlenanhänge wie 01, ein Ordner mit dem doppelt vorkommenden Namen erstellt wird und die Dateien in den Ordner verschoben werden.

Gruß waldgnarf
Bitte warten ..
Mitglied: bastla
19.08.2008 um 18:27 Uhr
Hallo waldgnarf!

Das Prinzip hatte ich schon verstanden, aber der Teufel steckt ja bekanntlich im Detail - hier zB in der Frage, woran ein "Dateiname" zu erkennen ist, ob es für die Namen ein Schema gibt, etwa:
Alles bis zum ersten Leerzeichen (oder, falls keines enthalten, der gesamte Dateiname) gilt als "Name."
oder:
Der "Name" entspricht den ersten 5 Zeichen des Dateinamens.
etc ...

Wenn ich nochmals das Beispiel von oben strapaziere (und noch etwas ausdehne):
Inhalt von "C:\New" soll ua sein:
01.
abc 01.txt 
02.
abc 01.log 
03.
abc.txt 
04.
abc 01.bak 
05.
abcde.txt 
06.
abc 01-alt.txt 
07.
abcde_080808.log 
08.
xyz_abc 01.txt 
09.
a 01.txt 
10.
ab#cd.log 
11.
xyzabc.txt 
12.
abcd-alt.txt 
13.
ab.doc 
14.
xyz abc.txt 
15.
abc_test.txt 
16.
ab-01.txt 
17.
abcd efgh.log 
18.
a.txt
Wie sähe dafür das gewünschte Ergebnis aus?

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
19.08.2008 um 22:22 Uhr
Guten Abend, sorry also bis zum Leerzeichen währe das was ich suche. Oder alle Nummern und Leerzeichen aus dem Dateinamen-String enfernen.
Bitte warten ..
Mitglied: bastla
20.08.2008 um 02:17 Uhr
Hallo Waldgnarf!

Versuch es damit:
01.
StartOrdner = "C:\New" 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set d = CreateObject("Scripting.Dictionary") 'Dictionary zum Sammeln der verschiedenen Dateinamen(sbestandteile) und Festhalten der Häufigkeiten 
05.
d.CompareMode = vbTextCompare 'Groß-/Kleinschreibung nicht beachten 
06.
 
07.
For Each Datei In fso.GetFolder(StartOrdner).Files 
08.
    Key = Split(fso.GetBaseName(Datei.Name), " ")(0) 'Dateinamensbestandteil bis zum ersten Leerzeichen ermitteln 
09.
    If d.Exists(Key) Then 'Dateiname mehrfach vorhanden 
10.
        d.Item(Key) = d.Item(Key) + 1 'Zähler erhöhen 
11.
    Else 'Dateiname kommt erstmals vor 
12.
        d.Add Key, 1 
13.
    End If 
14.
Next 
15.
 
16.
For Each Key In d.Keys 
17.
    If d.Item(Key) > 1 Then 'mehrere Dateinamen, daher in Ordner verschieben 
18.
        Ordner = StartOrdner & "\" & Key 
19.
        If Not fso.FileExists(Ordner) Then 'keine gleichnamige Datei vorhanden, Ordner kann bei Bedarf erstellt werden 
20.
            If Not fso.FolderExists(Ordner) Then fso.CreateFolder(Ordner) 'Ordner erstellen 
21.
            fso.MoveFile StartOrdner & "\" & Key & ".*", Ordner 'alle Dateien ohne Nummer verschieben 
22.
            fso.MoveFile StartOrdner & "\" & Key & " *.*", Ordner 'alle Dateien mit Nummer verschieben 
23.
        Else 
24.
            WScript.Echo "Ordner " & Ordner & " kann nicht erstellt werden." 
25.
        End If 
26.
    End If 
27.
Next 
28.
Set d = Nothing
Es wird vor dem Verschieben nicht geprüft, ob es im Zielordner bereits gleichnamige Dateien gibt.

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
20.08.2008 um 13:23 Uhr
Hat alles geklappt, vielen Dank

Gruß waldgnarf
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch: doppeltes Leerzeichen in Dateinamen?

gelöst Frage von WoswaasiBatch & Shell3 Kommentare

Hallo! Wir verarbeiten bei uns in der Arbeit Audio-Dateien, die über Nacht in 5-Minuten-Abschnitte gesplittet werden. Ich habe dafür ...

Batch & Shell

PowerShell Skript für doppelte Dateinamen

gelöst Frage von janelsaesserBatch & Shell1 Kommentar

Hallo zusammen, ich habe einen Oder (01_XY) in dem ganz viele Bilder von Personen liegen. Diese Bilder haben als ...

Batch & Shell

Batch oder VBS - Doppelte Dateinamen in einem Verzeichnis finden und löschen oder verschieben

gelöst Frage von goodbytesBatch & Shell6 Kommentare

Hallo, ich habe ein dringendes Problem. Durch einen Softwarefehler wurden mir in einem Verzeichnis sehr viele doppelte Dateinamen erzeugt ...

Datenbanken

Doppelte Daten anzeigen die nicht exact doppelt sind!

gelöst Frage von ChillministratorDatenbanken26 Kommentare

Hallo zusammen, ich habe eine Tabelle GRUNDWASSER die seit über 20 Jahren täglich mit Messdaten von ettlichen Loggern gefüttert ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 9 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 11 StundenAdministrator.de Feedback10 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...