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

Frage Entwicklung VB for Applications

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

19.08.2008, aktualisiert 20.08.2008, 8522 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

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 3 StundenWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 5 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...