charly74
Goto Top

Skript für Änderung Dateinamen

Hallo,

ich bin Lehrer einer Schule und erstelle den täglichen Vertretungsplan, der auf die Schulhomepage ausgegeben werden soll. Mangels eigener Kenntnisse wollte ich um Hilfe bei der Erstellung eines Skripts fragen. Folgendes Problem habe ich: Meine Dateien heißen derzeit z. B. lehrerplan_vom_10-11-2014.htm, lehrerplan_vom_11-11-2014.htm bzw. schuelerplan_vom_10-11-2014.htm, schuelerplan_vom_10-11-2014.htm usw.
Ich möchte innerhalb einer Batch-Datei ein Umbenennen erreichen in lehrerplan_mo.htm, schuelerplan_mo.html oder eben auch lehrerplan_di.htm, schuelerplan_di.html, d.h. das Skript müsste Teile des Dateinamens auslesen, erkennen um welches Datum es sich innerhalb des Dateinamens handelt, diesem den korrekten Wochentag zuordnen und anschließend umbenennen.
Anschließend möchte ich die veränderten Dateien auf den Webserver hochladen wo automatisch Verlinkungen "Montag", "Dienstag" usw. greifen.

Das Hochladen bekomme ich skriptmäßig selbst in Griff, aber das Datum auslesen und umbennen... das ist das Problem.

Könnte mir dabei jemand helfen bzw. ein paar Codezeilen schicken, die das leisten?
Ich bedanke ich schon vorab für jede Hilfe!!!

Charly
Kommentar vom Moderator Biber am Nov 19, 2014 um 17:55:47 Uhr
Das Hochladen bekomme ich skriptmäßig selbst in Griff, aber das Datum auslesen und umbennen... das ist das Problem.

set /a rgc+=1
#896

Bist nicht der Erste hier, der Probleme mit dem Umbennen hat...

Content-Key: 254492

Url: https://administrator.de/contentid/254492

Printed on: April 23, 2024 at 23:04 o'clock

Member: colinardo
Solution colinardo Nov 11, 2014, updated at Nov 12, 2014 at 08:21:25 (UTC)
Goto Top
Hallo Charly, Willkommen auf Administrator.de!
Das könntest du so mit einem VBS-File so lösen:
Das hier benennt alle *.htm|*.html-Dateien nach deinem Muster eines angegebenen Ordners entsprechend nach deinen Angaben um:
Const ORDNER = "C:\schulplaene"  
Dim fso,regex,arrParts,strNewName,file,strNewPath
Set fso = CreateObject("Scripting.Filesystemobject")  
Set regex = CreateObject("vbscript.regexp")  
regex.Pattern = "^(.+)_.+_(\d{1,2}-\d{1,2}-\d{4})\.(htm|html)$"  
regex.IgnoreCase = True
For Each file In fso.GetFolder(ORDNER).Files
	Set match = regex.Execute(file.Name)
	If match.Count > 0 Then
		strNewName = match(0).Submatches(0) & "_" & WeekdayName(Weekday(CDate(match(0).Submatches(1))),True) & "." & match(0).Submatches(2)  
                strNewPath =  file.ParentFolder & "\" & strNewName  
                if fso.FileExists(strNewPath) then 
                   fso.DeleteFile strNewPath,True
                end if
                fso.MoveFile file.Path, strNewPath
	End If
Next
Set fso = Nothing
Set regex = Nothing
Grüße Uwe
Member: charly74
charly74 Nov 12, 2014 at 07:59:18 (UTC)
Goto Top
Hallo Uwe,

tja, ich bin echt sprachlos. DANKE!
Ich hab es gerade getestet und siehe da, es funktioniert so, wie ich mir vorgestellt habe. Nochmals: Herzlichen Dank!

Eine Kleinigkeit hätte ich noch: Beim wiedeholten Ausführen des Skripts erscheint eine Fehlermeldung, da die betreffende Datei schon vorhanden sei. Könntest Du noch eine Abfrage einbauen, falls dem eben so ist, dass die bereits vorhandene Datei (die ja zeitlich dann schon älter und in meinem Fall überholt sein muss) vor dem Umbenennen gelöscht wird?

THX.
Kann ich Dir auch etwas Gutes tun? Auf welchem Wege?

charly
Member: colinardo
colinardo Nov 12, 2014 at 08:23:47 (UTC)
Goto Top
Zitat von @charly74:
tja, ich bin echt sprachlos. DANKE!
Ich hab es gerade getestet und siehe da, es funktioniert so, wie ich mir vorgestellt habe. Nochmals: Herzlichen Dank!
keine Ursache face-smile
Eine Kleinigkeit hätte ich noch: Beim wiedeholten Ausführen des Skripts erscheint eine Fehlermeldung, da die betreffende
Datei schon vorhanden sei. Könntest Du noch eine Abfrage einbauen, falls dem eben so ist, dass die bereits vorhandene Datei
(die ja zeitlich dann schon älter und in meinem Fall überholt sein muss) vor dem Umbenennen gelöscht wird?
Ist oben eingebaut
THX.
Kann ich Dir auch etwas Gutes tun? Auf welchem Wege?
mit einem virtuellen Kaffee face-wink oder wenn du unbedingt willst mit einer kleinen Spende face-smile

Grüße Uwe