Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

DateiRenamer nach Listenwerten

Frage Entwicklung VB for Applications

Mitglied: vic666

vic666 (Level 1) - Jetzt verbinden

17.05.2010, aktualisiert 16:40 Uhr, 2114 Aufrufe, 7 Kommentare

Breche mit gerade die Finger

Folgendes Problem:
Ich habe eine Reihe von Dateien (PDF), diese müssen anhand einer Liste (CSV) automatisch umbenannt werden.
Der Aufbau der Liste ist:

Wert1, Wert2,....Wertn, <Pfad zum Dokument>

Der Wert1 soll der Dateiname werden.

Ich stelle mir folgenden Ablauf vor:

Öffnen der CSV-Datei, auslesen der ersten Zeile, trennen der Werte, (Array?), dann umbenennen der Datei, auslesen der nächsten Zeile bis Ende.
Das sollte doch mit den FSOs möglich sein?

Gruß
Mitglied: bastla
17.05.2010 um 17:13 Uhr
Hallo Vic666 und willkommen im Forum!

Ungetestet etwa so:
01.
CSV = "D:\Deine CSV-Datei.csv" 
02.
Delim = "," 'Feldtrennzeichen 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLf) 
06.
For Each Line In T 
07.
    F = Split(Line, Delim) 
08.
    Neu = F(0) 
09.
    Alt = F(UBound(F)) 
10.
    If fso.FileExists(Alt) Then fso.GetFile(Alt).Name = Neu '& ".pdf" 
11.
Next
Da ich "Wert1" nicht kenne, habe ich in Zeile 10 noch dafür vorgesorgt, dass der Typ ".pdf" noch hinzugefügt werden muss - in diesem Fall einfach das Kommentarzeichen (') entfernen.

Nicht berücksichtigt (da von Dir auch nicht angesprochen) ist die Möglichkeit, dass es bereits eine gleichnamige Datei gibt.

Grüße
bastla
Bitte warten ..
Mitglied: vic666
18.05.2010 um 09:29 Uhr
Hallo Bastla,

Supi, vielen Dank! Dein code ist nicht nur gut, sondern sehr gut!!!

Bis auf ein kleines Problem, ich bekomme ein "List Index out of Bound" am Ende da T folgenden letzten Wert bekommt: : T(480) : "" : String
Den Fehler kann ich zwar mit einem on error abfangen, ist aber nicht gerade elegant.
Hast Du hier ad hoc eine Lösung?
Danke!
Gruß
vic666
Bitte warten ..
Mitglied: bastla
18.05.2010 um 11:11 Uhr
Hallo vic666!

Pack einfach die Zeilen 7 bis10 in einen "If"-Block:
If Trim(Line) <> "" Then
Grüße
bastla
Bitte warten ..
Mitglied: vic666
31.05.2010 um 15:41 Uhr
Hallo Bastla,

wie es immer so ist wenn ein Script erst einmal läuft dann kommen die weiteren Anforderungen und Ausnahmen hinzu:

Es kann in der CSV-Datei passieren, das Werte innerhalb von Delimitern Zeilenumbrüche enthalten, d.h. das der String sich über mehrere Zeilen hintereinander verteilt:

wert1, wert2, we
rt3,
wert4, wertn

Wie kriege ich das gebacken????

Grüße
Vic666
Bitte warten ..
Mitglied: bastla
31.05.2010 um 16:03 Uhr
Hallo vic666!
Es kann in der CSV-Datei passieren, das Werte innerhalb von Delimitern Zeilenumbrüche enthalten, d.h. das der String sich über mehrere Zeilen hintereinander verteilt:
Das wäre aber keine CSV-Datei mehr (da nicht mehr erkennbar, wo ein Satz = Zeile endet) - insofern wäre hier eher bei der Entstehung dieser seltsamen Datei anzusetzen ...

Sollte ich das aber falsch interpretiert haben und der Zeilenumbruch innerhalb des Feldes entspricht nicht dem Umbruch am Zeilenende (da zB nur LF ohne CR), sollte sich das per "Replace()" reparieren lassen, also etwa:
F = Split(Replace(Line,vbLf,""), Delim)
Grüße
bastla
Bitte warten ..
Mitglied: vic666
01.06.2010 um 09:38 Uhr
Hallo Bastla,

die "CSV-Datei" ist ein Export aus einer Anwendung heraus. Manipulieren kann ich hier nur leider die Feldbegrenzungs- und Trennzeichen. Und die Inhalte eines Wertes sind mit CR getrennt.
Noch mal zum Verständis der Satzaufbau an einem Besispiel:

Vorname, Nachname, Anschrift, Alter, (Dateipfad)[CR]
Vorname, Nachname, Anschrift(Teil1) [CR]
Anschrift(Teil2)[CR], Alter, (Dateipfad)[CR]
Vorname, Nachname, Anschrift(Teil1) [CR]
Anschrift(Teil2)[CR]
Anschrift(Teil3)[CR], Alter, (Dateipfad)[CR]

Gruß
vic666
Bitte warten ..
Mitglied: LotPings
01.06.2010 um 16:05 Uhr
Hallo vic666,

da zum Umbenennen ja ein existierender Dateipfad als letztes Element gefunden werden muss, liest du solange Zeilen ein, bis das zutrifft.
Die dazwischen liegenden, fürs Umbenennen nicht nötigen Angaben verwirfst du.

Gruß
LotPings
Bitte warten ..
Neue Wissensbeiträge
Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(7)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Sicherheit

Eventuell neue Lücke in Intels ME

Information von sabines zum Thema Sicherheit ...

Viren und Trojaner

FinFisher: Internetprovider schieben Spitzelopfern Malware unter

(1)

Information von kaiand1 zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Humor (lol)
Freidach Beitrag (22)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein (20)

Frage von Yanmai zum Thema Lizenzierung ...

Humor (lol)
Wo ist der Fehler auf dem Bild? (17)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows 7
SSD - Win7 Lags (17)

Frage von ph5555 zum Thema Windows 7 ...