Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 05.11.2007 16:36:39 von Jascha Lendeckel

Hallo NG,

wie ich schon oben geschrieben habe, hab ich ein Problem mit Frontpage
und Dateinamen im HTML-Code. Eigentlich sind es sogar zwei:
1. Wenn ich das Webverzeichnis im Windows-Explorer öffne sind die
Dateinamen fast alle Groß und Klein geschrieben. Wenn ich das
Verzeichnis aber in Frontpage anzeigen lasse sind alle Dateinamen bis
auf ein paar wenige Ausnahmen klein geschrieben. Im HTML-Code aber
stehen sie so wie sie auch im Windows Explorer angezeigt werden.
Kann man das irgendwie korrigieren?
2. Wenn ich jetzt hingehe und alle Dateien in Frontpage in ein neues
Unterverzeichniss kopiere, Ändert Frontpage die realen Dateinamen so
ab wie er sie die ganze Zeit angezeigt hat, so das nun auch im Windows
Explorer fast alle Dateien klein geschrieben sind. Im Html-Code werden
leider nicht alle Dateinamen umbenannt, was auf einem Server der Gross
und Kleinschreibung unterscheidet zum Crash führt.

Beispiel aus dem HTML-Code:


onmouseover="F_roll('NavigationButton3',1)"
onmouseout="F_roll('NavigationButton3',0)">
name="NavigationButton3"
src="images/autogen/wir_uber_uns_np1.gif"
onload="F_loadRollover(this,'Wir_uber_Uns_NRp2.gif',0)"
border="0" alt="Wir über uns"
title="Wir über uns" width="116" height="31">




Das Menü besteht auf der Seite aus Grafiken die, wenn man mit der Maus
darüber geht, ihr Aussehen ändern. Werden die Grafikdatei jetzt
verschoben ändert sich nur der Aufruf unter SRC, der Aufruf unter
ONLOAD wird von Frontpage nicht geändert.

Weiß Jemand für die beiden Probleme eine einfache Lösung?
Oder hat schon jemand ein VBA-Programm für das Problem geschrieben,
das alle Dateinamen einer Webseite mit LCASE umwandelt und
anschließend alle entsprechenden Aufrufe in den HTML-Seiten korrigiert?
Wenn nicht, kann mir vielleicht jemand die VBA-Funktion im
Frontpage-Frontend von VBA sagen mit der ich alle Datein eines Webs
auflisten kann.

--
Gruß

Jascha Lendeckel
---
Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu
werden.

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

[Albert Einstein]

Re: Zweiter Lösungsversuch für Problem mit Gross/Klein

am 06.11.2007 02:27:35 von Christoph Schneegans

Jascha Lendeckel schrieb:

> Wenn ich das Webverzeichnis im Windows-Explorer öffne sind die Dateinamen
> fast alle Groß und Klein geschrieben. Wenn ich das Verzeichnis aber in
> Frontpage anzeigen lasse sind alle Dateinamen bis auf ein paar wenige
> Ausnahmen klein geschrieben.

Das ist seltsam. Datenträger- oder serverbasierte Website? Welches Dateisystem,
FAT oder NTFS? Welches Betriebssystem?

> Werden die Grafikdatei jetzt verschoben ändert sich nur der Aufruf unter SRC,
> der Aufruf unter ONLOAD wird von Frontpage nicht geändert.

Klar, FrontPage kann nicht wissen, daß dein JavaScript-Code Dateinamen erhält,
daran ändert auch VBA zunächst nichts.

> Oder hat schon jemand ein VBA-Programm für das Problem geschrieben, das alle Dateinamen einer Webseite mit LCASE umwandelt und
> anschließend alle entsprechenden Aufrufe in den HTML-Seiten korrigiert?

tut das.
Einfach den Code in ein Modul einfügen, den Cursor in die Methode
"MakeAllPathsLowerCase" setzen und mit F5 ausführen. Dieses Makro ändert
sämtliche Verzeichnis- und Dateinamen in Kleinschreibung.

FrontPage ändert automatisch auch alle Verweise, die es erkennt; JavaScript-Code
bleibt natürlich unverändert.

> Wenn nicht, kann mir vielleicht jemand die VBA-Funktion im Frontpage-Frontend von VBA sagen mit der ich alle Datein eines Webs
> auflisten kann.

Das ist leicht:

Sub PrintAllFiles()

Dim wf As FrontPage.WebFile
For Each wf In ActiveWeb.AllFiles
Debug.Print wf.Url
Next

End Sub

Bei 1.500 Dateien lohnt sich ein VBA-Makro jedenfalls. Mach vorher auf jeden
Fall eine Sicherungskopie der Website.

--
· Validator für "language tags" gemäß RFC 4646

Re: Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 06.11.2007 11:03:17 von Jascha Lendeckel

Christoph Schneegans schrieb:
> Das ist seltsam. Datenträger- oder serverbasierte Website? Welches
> Dateisystem,
> FAT oder NTFS? Welches Betriebssystem?

Betriebssystem ist XP, Filesystem der Datenplatte ist aber FAT32 und
der Rechner ist eine ganz normale Arbeitsmaschine ohne Server im
Hintergrund. Wir haben hier zwar einen Datei und einen Internetserver
die laufen aber auf Standard-Windows-Rechnern, nicht unter
Windows-Server-Lizenzen.
>
> tut
> das.
> Einfach den Code in ein Modul einfügen, den Cursor in die Methode
> "MakeAllPathsLowerCase" setzen und mit F5 ausführen. Dieses Makro ändert
> sämtliche Verzeichnis- und Dateinamen in Kleinschreibung.

Werde ich später mal ausprobieren
>
> FrontPage ändert automatisch auch alle Verweise, die es erkennt;
> JavaScript-Code
> bleibt natürlich unverändert.
>
Deshalb hatte ich überlegt, selber was zu schreiben und es mit Suchen
und ersetzen zu machen.
Dazu brauche ich aber erst mal eine Liste alle Dateinamen des Webs, so
das ich die Dateien anschließend alle einzeln umbenennen kann und
danach mit Suchen und ersetzen nach Dateinamen suchen und diese ändern
kann.

> Das ist leicht:
>
> Sub PrintAllFiles()
>
> Dim wf As FrontPage.WebFile
> For Each wf In ActiveWeb.AllFiles
> Debug.Print wf.Url
> Next
>
> End Sub
>

wf.url enthält dann den Dateinamen mit Pfad, ausgehend vom
Stammverzeichnis des Webs, ja?
Das heißt ich könnte die Dateien mit:

Name $Stammverzeichnis§ + wf.url AS $Stammverzeichnis§ + LCase(wf.url)

umbenennen oder auch mit:

' Variablendeklaration
Set fso = CreateObject("Scripting.FileSystemObject")
' Datei öffnen
Set File = fso.OpenTextFile($Stammverzeichnis§ + wf.url, 1, False)

öffnen und bearbeiten?

> Bei 1.500 Dateien lohnt sich ein VBA-Makro jedenfalls. Mach vorher auf
> jeden
> Fall eine Sicherungskopie der Website.

Logisch oder?


--
Gruß

Jascha Lendeckel
---
Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu
werden.

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

[Albert Einstein]

Re: Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 06.11.2007 11:12:50 von Jascha Lendeckel

Christoph Schneegans schrieb:
> Das ist seltsam. Datenträger- oder serverbasierte Website? Welches
> Dateisystem,
> FAT oder NTFS? Welches Betriebssystem?

Betriebssystem ist XP, Filesystem der Datenplatte ist aber FAT32 und
der Rechner ist eine ganz normale Arbeitsmaschine ohne Server im
Hintergrund. Wir haben hier zwar einen Datei und einen Internetserver
die laufen aber auf Standard-Windows-Rechnern, nicht unter
Windows-Server-Lizenzen.
>
> tut
> das.
> Einfach den Code in ein Modul einfügen, den Cursor in die Methode
> "MakeAllPathsLowerCase" setzen und mit F5 ausführen. Dieses Makro ändert
> sämtliche Verzeichnis- und Dateinamen in Kleinschreibung.

Werde ich später mal ausprobieren
>
> FrontPage ändert automatisch auch alle Verweise, die es erkennt;
> JavaScript-Code
> bleibt natürlich unverändert.
>
Deshalb hatte ich überlegt, selber was zu schreiben und es mit Suchen
und ersetzen zu machen.
Dazu brauche ich aber erst mal eine Liste alle Dateinamen des Webs, so
das ich die Dateien anschließend alle einzeln umbenennen kann und
danach mit Suchen und ersetzen nach Dateinamen suchen und diese ändern
kann.

> Das ist leicht:
>
> Sub PrintAllFiles()
>
> Dim wf As FrontPage.WebFile
> For Each wf In ActiveWeb.AllFiles
> Debug.Print wf.Url
> Next
>
> End Sub
>

wf.url enthält dann den Dateinamen mit Pfad, ausgehend vom
Stammverzeichnis des Webs, ja?
Das heißt ich könnte die Dateien mit:

Name $Stammverzeichnis§ + wf.url AS $Stammverzeichnis§ + LCase(wf.url)

umbenennen oder auch mit:

' Variablendeklaration
Set fso = CreateObject("Scripting.FileSystemObject")
' Datei öffnen
Set File = fso.OpenTextFile($Stammverzeichnis§ + wf.url, 1, False)

öffnen und bearbeiten?

> Bei 1.500 Dateien lohnt sich ein VBA-Makro jedenfalls. Mach vorher auf
> jeden
> Fall eine Sicherungskopie der Website.

Logisch oder?


--
Gruß

Jascha Lendeckel
---
Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu
werden.

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

[Albert Einstein]

Re: Zweiter Lösungsversuch für Problem mit Gross/Klein

am 06.11.2007 12:35:51 von Christoph Schneegans

Jascha Lendeckel schrieb:

> Das heißt ich könnte die Dateien mit:
>
> Name $Stammverzeichnis§ + wf.url AS $Stammverzeichnis§ + LCase(wf.url)

Du solltest auf keinen Fall Dateien außerhalb von FrontPage umbenennen, weil
dann Links nicht aktualisiert werden. Und innerhalb von FrontPage kannst du
"Foo" nicht direkt in "foo" umbenennen, das geht nur über einen Zwischenschritt.
Mein Makro tut das alles bereits, ehrlich.

> umbenennen oder auch mit:
>
> ' Variablendeklaration
> Set fso = CreateObject("Scripting.FileSystemObject")
> ' Datei öffnen
> Set File = fso.OpenTextFile($Stammverzeichnis§ + wf.url, 1, False)
>
> öffnen und bearbeiten?

Das geht alles mit Bordmitteln viel bequemer und sicherer:

Sub ReplaceInAllFiles()

Dim wf As FrontPage.WebFile
Dim pw As PageWindowEx
For Each wf In ActiveWeb.AllFiles
If wf.Extension = "htm" Then
Set pw = wf.Edit(fpPageViewNoWindow)

pw.Document.DocumentHTML = Replace(pw.Document.DocumentHTML, "foo", "bar")

If pw.IsDirty Then pw.Save
pw.Close
End If
Next
End Sub


--
· text/html in application/xhtml+xml umwandeln

Re: Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 06.11.2007 13:24:54 von Jascha Lendeckel

Jascha Lendeckel schrieb:
>
> wf.url enthält dann den Dateinamen mit Pfad, ausgehend vom
> Stammverzeichnis des Webs, ja?
> Das heißt ich könnte die Dateien mit:
>
> Name $Stammverzeichnis§ + wf.url AS $Stammverzeichnis§ + LCase(wf.url)
>
Also, das hab ich schonmal und es funktioniert auch:
Sub RenameAllFiles()

Dim wf As FrontPage.WebFile
Dim Datei, Neudat As String
For Each wf1 In ActiveWeb.AllFiles
Datei = wf.Url
Datei = Right(Datei, Len(Datei) - 8)
Neudat = LCase(Datei)
Name Datei As Neudat
Next
End Sub

Aber mit dem Suchen und ersetzen komme ich nicht weiter. Ich hab
versucht mit:

ActiveWorkbook.HTMLProject.HTMLProjectItems _
Item(1).Open(msoHTMLProjectOpenTextView)

eine HTML-Seite zu öffnen bekomme aber bei Item(1) einen Fehler beim
Kompilieren.

Auch der Versuch über "Verweise" die Word-Library einzubinden und dann
die HRML-Seite als Word-Dokument zu öffnen misslang weil er dann mit
wf.Url nicht mehr klar kommt, irgendwie wirft er da was durcheinander.

Am Einfachsten währe es ja, wenn sich die Datei über Frontpage öffnen
liese und ich die "Suchen und Ersetzen-Funktion" von Frontpage
verwenden könnte. Dazu habe ich aber in der VBA-Hilfe nichts gefunden
und VBA-Aufzeichnen wie bei Excel oder Word, geht ja unter Frontpage
nicht.

--
Gruß

Jascha Lendeckel
---
Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu
werden.

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

[Albert Einstein]

Re: Zweiter Lösungsversuch für Problem mit Gross/Klein

am 06.11.2007 15:05:34 von Christoph Schneegans

Jascha Lendeckel schrieb:

> Sub RenameAllFiles()
>
> Dim wf As FrontPage.WebFile
> Dim Datei, Neudat As String
> For Each wf1 In ActiveWeb.AllFiles
> Datei = wf.Url
> Datei = Right(Datei, Len(Datei) - 8)
> Neudat = LCase(Datei)
> Name Datei As Neudat
> Next
> End Sub

Das funktioniert gerade nicht, weil Verweise nicht aktualisiert werden.
Ich habe bereits ein Makro gepostet, das zuverlässig funktioniert.

> Aber mit dem Suchen und ersetzen komme ich nicht weiter. Ich hab versucht (...) eine HTML-Seite zu öffnen

Auch dazu habe ich bereits ein Makro gepostet.

> Am Einfachsten währe es ja, wenn sich die Datei über Frontpage öffnen liese und ich die "Suchen und Ersetzen-Funktion" von
> Frontpage verwenden könnte.

Das geht nicht direkt. Aber wenn du meinst, mit Suchen und Ersetzen
auszukommen, bräuchtest du ja ohnehin kein VBA. Ab FrontPage 2003 gibt
es auch reguläre Ausdrücke, vgl.
.

--
· Validator für "language tags" gemäß RFC 4646

Re: Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 06.11.2007 16:24:01 von Jascha Lendeckel

Hallo Christoph,

erstmal Danke für deine Hilfe und deine Makros! als ich die letzte
Mail geschrieben habe, hatte ich deine Antwort noch nicht gelesen.
Das letzte Makro von mir hatte auch nur den Sinn, die dateien alle
umzubenennen, das es die Verlinkung nicht ändern konnte, war klar!
Genau sowenig aber wie dein erstes Beispiel die Dateinamen im
Javascript ändern konnte.
Ich hab jetzt ein Makro geschrieben das beides kann.

Sub ReplaceAllFiles2()

Dim wf1 As FrontPage.WebFile
Dim wf2 As FrontPage.WebFile
Dim pw As PageWindowEx
Dim Datei, Neudat, Datei1(1600) As String
i = 0
' Alle Dateien des Webs in Kleinschreibweise konvertieren
For Each wf1 In ActiveWeb.AllFiles
i = i + 1
Datei = wf1.Url
Datei = Right(Datei, Len(Datei) - 8)
Neudat = LCase(Datei)
Name Datei As Neudat
suche = 1
Do Until suche = 0
suche = InStr(suche + 1, Datei, "/", vbTextCompare)
If suche > 0 Then pos = suche
Loop
' Speichern der alten Dateinamen
Datei1(i) = Right(Datei, Len(Datei) - pos)
Next
Anzahl = i
'Alle Dateien des Webs mit der Endung "htm" oder "html" Laden und
'alle Links darin konvertieren
For Each wf1 In ActiveWeb.AllFiles
Datei = wf1.Url
If Right(Datei, 3) = "htm" Or Right(Datei, 4) = "html" Then
Set pw = wf1.Edit(fpPageViewNoWindow)
For i = 1 To Anzahl
pw.Document.DocumentHTML =
Replace(pw.Document.DocumentHTML, Datei1(i), LCase(Datei1(i)))
Next
If pw.IsDirty Then pw.Save
pw.Close
End If
Next
End Sub

Ich schau mir aber in jedem Fall auch noch deine anderen Makros an!
--
Gruß

Jascha Lendeckel
---
Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu
werden.

Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

[Albert Einstein]

Re: Zweiter Lösungsversuch für Problem mit Gross/Kleinschreibung

am 07.11.2007 10:29:01 von Jascha Lendeckel

Christoph Schneegans schrieb:
>
> Das funktioniert gerade nicht, weil Verweise nicht aktualisiert
> werden. Ich habe bereits ein Makro gepostet, das zuverlässig
> funktioniert.

Futen Morgen Christoph,

ich hab mir eben mal das Makro von dir bei Googel angesehen. Das wäre
im Prinzip das gleiche gewesen als hätte ich alle Dateien unter
Frontpage im Ordnerverzeichnis von Hand geändert. Incl. des bereits
festgestellten Problems, das alle Scripte davon unbeeinflusst bleiben!
Erschwerend kommt dann hinzu, das deren reale Namen nicht mehr bekant
sind nachdem dein Makro ausgeführt wurde und somit eine
Programmgestützte Umbenennung nicht mehr so ohne weiteres möglich ist.
das von mir geschriebene Makro lässt zwar die Automismen von Frontpage
außen vor, ersetzt dafür aber auch Dateinamen innerhalb von Scripts im
Html-Code.

> Das geht nicht direkt. Aber wenn du meinst, mit Suchen und Ersetzen
> auszukommen, bräuchtest du ja ohnehin kein VBA. Ab FrontPage 2003
> gibt es auch reguläre Ausdrücke, vgl.
> .

Tja, damit hättest du dann mein eigentliches Problem offen gelegt,
mein Englisch ist miserabel! Um diese Seite zu lesen und zu verstehen,
währe ich einen halben Tag beschäftigt.

Auf jeden Fall möchte ich mich nochmal sehr für deine Hilfe bedanken
und bitte um Nachsicht, das ich mich nicht geradlinig an deine
Vorschläge gehalten habe. Andererseits, nur so lernt man was!

Gruß Jascha