Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

In Linkstruktur Sonderzeichen mit VB transformieren.

Frage Entwicklung VB for Applications

Mitglied: Fraenky

Fraenky (Level 1) - Jetzt verbinden

10.11.2007, aktualisiert 16.11.2007, 4811 Aufrufe, 11 Kommentare

Die bestehende Linkstruktur an bestehende Linkkonventionen bezüglich Sonderzeichen anpassen.

Hallo zusammen.
In diesem Schritt sollen jetzt also die Links, die auf die im vorigen Schritt umbenannten Dateien verweisen, mit Hilfe der im vorigen Script erstellten Umwandlungstabelle von Sonderzeichen befreit werden.
Zu anderen Zwecken hatte ich schon alle Texte, die auf diese jetzt frisch umbenannten Übersetzungsdateien verweisen, in einem einzigen Dokument zusammengefaßt, das Wir jetzt hier gut verwenden können, um die Aktion durchzuführen.
Festzuhalten ist, das Wir zwei verschiedene Arten von Text haben.
Einmal Text, in dem Sonderzeichen erlaubt sind. Das sind normaler Text und der Linktext, also der Text, auf den geklickt wird.
Nicht erlaubt sind Sonderzeichen in der Ordnerstruktur des Links sowie in der angelinkten Datei.
Also muß das Script nur die Bereiche bearbeiten, die den Link enthalten.
Desweiteren sollte das Script einen Arrey bereitstellen, in dem ich die nicht mit der Umwandlungstabelle erstellten Modifizierungen der Dateinamen bekannt machen kann nach folgendem Schema: Dateiname-mit-Sonderzeichen = Neuer-Dateiname-Manuell-erstellt, Dateiname2-mit-Sonderzeichen = Neuer-Dateiname2-Manuell-erstellt usw.
Dieses Arrey soll also alle Dateinamen enthalten, die von mir wegen der Dopplungsgefahr manuell umbenannt wurden.
Das Script soll also den Teil des Links(wenn ein Sonderzeichen enthalten ist), der die angelinkte Datei anspricht(im unteren Beispiel DateinamePerd%E3o), zuerst in dem Arrey mit dem Dateinamen links des = vergleichen. Wenn Treffer, mit dem rechten Teil des = ersetzen. Wenn kein Treffer, mit Hilfe der Umwandlungstabelle ersetzen.
Zuerst muß aber der linke Teil vom = im Arrey mit der schon entwickelten Sonderfunktion Konvert in html Sonderzeichendarstellung umgewandelt werden, damit der Vergleich funktionieren kann.
Wegen der geringen Anzahl der Ausnahmen kann ich aber die Dateinamen links des = im Arrey auch manuell im html Format angeben.
Falls im Pfad, also nicht in der angelinkten Datei, ein Sonderzeichen gefunden und ersetzt wird, soll dieser in eine Protokolldatei geschrieben werden, damit ich ihn manuell in meiner Ordnerstruktur anpassen kann.
Struktur der Links:
<a title="Titel"href="Pfad/DateinamePerd%E3o.php">Linktext</a>
Also sollen alle Operationen zwischen <a und <a/> durchgeführt werden.
Den Start stelle ich mir so vor, das, wie im vorigen Script, ich die Datei mit dem Text auf das Script ziehe, was ja viel komvortabler als der Aufruf über die Kommandozeile ist.
Wenn ich hier wieder fachmänische Hilfe finde, bringt mich das den letzten großen Schritt bezüglich der Sonderzeichenproblematik weiter.
Dank und Gruß
Fraenky
Mitglied: Fraenky
13.11.2007 um 12:53 Uhr
Hallo bastla.
Ok. Ich sehe es ein. Ohne Dich läuft hier in der Rubrik gar nichts mehr. Sorry.
Es währe wirklich sehr freundlich von Dir, wenn Du mit Deinem großen Wissen, das Du in 30 Jahren erworben hast, Uns auf so tolle, effiziente Art und Weise weiterhelfen könntest. Und weil ich ja weiß, das Du auf vielen Baustellen hilfreich zur Seite stehst, habe ich die Aufgabenstellung noch mal überdacht und eine Minimalanforderung entwickelt.
1. Die Überprüfung des Pfades auf Sonderzeichen kann wegfallen.
2. Das Arrey zur Bekanntmachung der manuell umbenannten Dateinamen kann notfalls auch wegfallen. Dann muß ich über Suchen und Ersetzen die Links finden, die auf die ca 20 manuell umnenannten Übersetzungsdateien verweisen und diese ändern.
Der Hauptteil der Arbeit währe dann immer noch vom Script geleistet.
Und weiter währe es doch schön, wenn der folgende Vierzeiler sich wieder mal bewahrheiten würde:
Hast Du Probleme am PC
Komm nach administrator.de
Du brauchst nicht mehr zu laufen
Hier werden Sie geholfen.
Gruß
Fraenky
Bitte warten ..
Mitglied: bastla
13.11.2007 um 14:16 Uhr
Hallo Fraenky!

Das trifft sich gut - habe kürzlich eine Baustelle abgeschlossen ...
1. Die Überprüfung des Pfades auf Sonderzeichen kann wegfallen.
Hier hätte ich eine manuelle Ersetzung vorweg vorgeschlagen (sowohl in den Ordnernamen des Dateisystems als auch im HTML-Dokument - in letzterem einfach per "Suchen/Ersetzen", da die Angabe des gesamten Pfades (alt und neu) - und damit eines langen Suchbegriffes - dafür sorgen sollte, dass tatsächlich nur der betreffende Pfad verändert wird und keine unerwünschten Ersetzungen in Dateinamen oder Texten stattfinden).

2. Das Array zur Bekanntmachung der manuell umbenannten Dateinamen kann notfalls auch wegfallen.
Schau'n mer mal ...
Noch zwei Fragen:
... in einem einzigen Dokument ...
Ist dieses Dokument als Linkliste strukturiert (ein Link je Zeile) oder kann zumindest davon ausgegangen werden, dass eine zeilenweise Bearbeitung möglich ist (da keine - im Quellcode - zeilenübergreifenden Links vorkommen)?

Also sollen alle Operationen zwischen <a und <a/> durchgeführt werden
Ich hätte eigentlich angenommen, dass nur die Dateinamen (oder ev -pfade) betroffen wären und daher nur den Bereich zwischen href=" und dem nächsten Anführungszeichen als relevant erachtet - oder sollten doch auch Titel und Linktext geändert werden?

Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
13.11.2007 um 23:34 Uhr
Hallo bastla.
Schön, das Du wieder hier bist.
Das angesprochene Dokument kannst Du Dir als Liedtextsammlung vorstellen, die im zeilenweisen Wechsel zwischen zwei Sprachen vorliegt.
Die Links auf die weiter ausführenden Übersetzungsdateien(also auf die Dateien, die neu umbenannt wurden) können also beliebig auftauchen. Zwei, drei hintereinander in einer Zeile oder auch zeilenübergreifend.
Also vielleicht am besten in der nächsten Zeile nach dem Endmerkmal suchen(falls es nicht in der monentanen auftaucht), um den Arbeitsbereich zu separieren.
Mit <a </a> wollte ich den maximalen Einsatzbereich aufzeigen. Du mit dem klaren Blick des erfahrenen Programierers hast diesen genauer eingegrenzt, also zwischen href " und ".
Ein Sahnehäubchen währe es, wo Wir hier gerade sind, wenn das Script überprüfen würde, ob es Wörter in der Liedtextsammlung gibt, die dem Linktext entsprechen und nicht zwischen <a </a> und auch nicht zwischen <div class="silber"> und </div>(deutsche Übersetzung, für den Fall, das Wörter in beiden Sprachen existieren) stehen.
Dann müßte das Script die Linktexte zuerst bearbeiten, die die meisten Wörter beinhalten, damit nicht ein einzelnes Wort das mehrteilige verhindern kann, weil es schon verlinkt wurde.
Dank und Gruß
Fraenky
Bitte warten ..
Mitglied: bastla
15.11.2007 um 02:09 Uhr
Hallo Fraenky!

Für den folgenden Script-Entwurf werden die "SonderzeichenErsetzung.txt" aus dem vorherigen Schritt benötigt sowie eine "Ausnahmen.txt" zur Zuordnung der manuell zu ersetzenden Dateinamen nach folgendem Schema berücksichtigt:
01.
alter Dateiname=neuer Dateiname
Zwischen dem jeweiligen Dateinamen und dem "=" darf kein Leerzeichen stehen. Die Schreibweise des alten Dateinamens muss dabei der bereits im Dokument verwendeten entsprechen (es erfolgt vor der Ersetzung keine Konvertierung) und es wird ein davor stehender Pfad (mit "/" getrennt) sowie die Angabe des Dateityps (zB ".php") vorausgesetzt.

Falls keine oder eine leere "Ausnahmen.txt" vorgefunden wird, ist zu entscheiden, ob dennoch die Konvertierung (dann eben ausnahmslos aller Dateinamen und Pfade) erfolgen oder das Script abgebrochen werden soll.

Da auch in den Pfaden enthaltene Sonderzeichen umgewandelt würden, sollten diese bereits im Vorhinein per Suchen/Ersetzen behandelt worden sein.

01.
Const sSonder = "C:\Skripts\SonderzeichenErsetzung.txt" 
02.
Const sAusnahmen = "C:\Skripts\Ausnahmen.txt" 
03.
 
04.
Const sFileExtOld = ".bak" 
05.
 
06.
Const sStart = "href=""" 'linke Begrenzung der zu konvertierenden Sequenz 
07.
Const sEnd = """" 'rechte Begrenzung der zu konvertierenden Sequenz 
08.
 
09.
lLenStart = Len(sStart) 
10.
 
11.
If WScript.Arguments.Count = 0 Then 
12.
	WScript.Echo "Datei mit umzubenennenden Links als Parameter uebergeben!" 
13.
	WScript.Quit(1) 
14.
End If 
15.
 
16.
Set fso = CreateObject("Scripting.FileSystemObject") 
17.
sFile = WScript.Arguments(0) 
18.
 
19.
If Not fso.FileExists(sFile) Then 
20.
	WScript.Echo sFile & " ist kein gueltiger Dateiname!" 
21.
	WScript.Quit(1) 
22.
End If 
23.
 
24.
If Not fso.FileExists(sSonder) Then 
25.
	WScript.Echo "Sonderzeichendaten " & sSonder & " nicht gefunden." 
26.
	WScript.Quit(1) 
27.
End If 
28.
Set oSonder = fso.OpenTextFile(sSonder, 1) 
29.
If Not oSonder.AtEndOfStream Then  
30.
	aSonder = Split(oSonder.ReadAll, vbCrLF) 
31.
Else 
32.
	oSonder.Close 
33.
	WScript.Echo "Sonderzeichendatei " & sSonder & " enthält keine Daten!" 
34.
	WScript.Quit(1) 
35.
End If 
36.
oSonder.Close 
37.
 
38.
If Not fso.FileExists(sAusnahmen) Then 
39.
	R = MsgBox("Ausnahmendatei " & sAusnahmen & " nicht gefunden!" & vbCrLF & vbCrLF & _ 
40.
		"Sollen alle Links (ohne Ausnahmen) umgewandelt werden?",vbYesNo) 
41.
	If R <> vbYes Then WScript.Quit(1) 
42.
	bAusnahmen = False 
43.
Else 
44.
	Set oAusnahmen = fso.OpenTextFile(sAusnahmen, 1) 
45.
	If Not oAusnahmen.AtEndOfStream Then  
46.
		aAusnahmen = Split(oAusnahmen.ReadAll, vbCrLF) 
47.
		bAusnahmen = True 
48.
	Else 
49.
		R = MsgBox("Ausnahmendatei " & sAusnahmen & " enthält keine Daten!" & vbCrLF & vbCrLF & _ 
50.
		"Sollen alle Links (ohne Ausnahmen) umgewandelt werden?",vbYesNo) 
51.
		If R <> vbYes Then WScript.Quit(1) 
52.
		bAusnahmen = False 
53.
	End If 
54.
	oAusnahmen.Close 
55.
 
56.
End If 
57.
 
58.
sFileBak = sFile & sFileExtOld 
59.
If fso.FileExists(sFileBak) Then fso.DeleteFile(sFileBak) 
60.
Set oFile = fso.GetFile(sFile) 
61.
oFile.Name = sFileBak 
62.
sText = oFile.OpenAsTextStream(1).ReadAll 
63.
Set oFile = Nothing 
64.
 
65.
Set oFileNew = fso.OpenTextFile(sFile, 2, True) 
66.
 
67.
bDone = False 
68.
lEnd = 0 
69.
lPos2Write = 1 
70.
Do 
71.
	lStart = InStr(lEnd + 1, sText, sStart, vBTextCompare) 
72.
	If lStart > 0 Then 
73.
		lStart = lStart + lLenStart 
74.
		oFileNew.Write Mid(sText, lPos2Write, lStart - lPos2Write) 
75.
		lPos2Write = lStart 
76.
		lEnd = InStr(lStart, sText, sEnd, vBTextCompare) 
77.
		If lEnd > 0 Then 
78.
			sLinkOld = Mid(sText, lStart, lEnd - lStart) 
79.
			sLinkNew = ReplaceSpecialChars(sLinkOld, bAusnahmen) 
80.
			oFileNew.Write sLinkNew 
81.
			lPos2Write = lEnd 
82.
		Else 
83.
			bDone = True 
84.
		End If 
85.
	Else 
86.
		bDone = True 
87.
	End If 
88.
Loop  Until bDone 
89.
 
90.
oFileNew.Write Mid(sText, lPos2Write) 
91.
oFileNew.Close 
92.
 
93.
Function ReplaceSpecialChars(sOld, bAus) 
94.
sTemp = sOld 
95.
If bAus Then 
96.
	For Each sLine In aAusnahmen 
97.
		aAus = Split(sLine, "=") 
98.
		If InStr(sOld, "/" & aAus(0)) <> 0 Then 
99.
			sTemp = Replace(sOld, "/" & aAus(0), "/" & aAus(1)) 
100.
			Exit For 
101.
		End If 
102.
	Next 
103.
End If 
104.
 
105.
If sTemp = sOld Then 
106.
	For Each sLine In aSonder 
107.
		aChars = Split(sLine, ",") 
108.
		For i = 1 To UBound(aChars) 
109.
			sTemp = Replace(sTemp, aChars(i), aChars(0)) 
110.
		Next 
111.
	Next 
112.
End If 
113.
ReplaceSpecialChars = sTemp 
114.
End Function
Von der bearbeiteten Datei wird eine Sicherungskopie (mit der zusätzlichen Endung ".bak") erstellt.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
15.11.2007 um 03:27 Uhr
@bastla

Es muss aber wirklich nicht sein, dass Du um diese Zeit noch am Skripten bist.
Oder am Kommentare verfassen in dubiosen Foren....
Mach ich ja auch nicht.

Morgen ist auch noch ein Tag..



Grüße
Biber
Bitte warten ..
Mitglied: bastla
15.11.2007 um 07:26 Uhr
@Biber
Oder am Kommentare verfassen in dubiosen Foren....
Woher weißt Du von den dubiosen Foren?

... um diese Zeit noch am Skripten bist.
Mach ich ja auch nicht.
Nee, is klar, bei Dir ist's ja auch eine ganz andere Zeit - und vermutlich hast Du auch nur gebatcht ...

Jedenfalls schaut's so aus, als müssten wir beide uns wenigstens nicht um Schlafzimmerschranken kümmern ...

Grüße und guten Morgen
bastla
Bitte warten ..
Mitglied: Fraenky
15.11.2007 um 15:18 Uhr
Hallo bastla.
Habe bei Scriptausführung leider folgenden Fehlercode erhalten:

Zeile 61
Ungültiger Prozeduraufruf oder ungültiges Argument
Code 800A0005
Laufzeitfehler in MS VBS

Gruß
Fraenky
Bitte warten ..
Mitglied: bastla
15.11.2007 um 17:12 Uhr
Hallo Fraenky!

Ändere bitte die Zeile 61 von
01.
oFile.Name = sFileBak
auf
01.
oFile.Name = oFile.Name & sFileExtOld
Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
15.11.2007 um 18:10 Uhr
Hallo bastla.
Es geht vorwärts. Hier eine weitere Fehlermeldung:

Zeile 98
Zeichen 3
Index außerhalb des gültigen Bereichs: "[number:0 ]"
Code 800A0009
Laufzeitfehler in MS VBS

Grüße
Fraenky
Bitte warten ..
Mitglied: bastla
15.11.2007 um 18:20 Uhr
Hallo Fraenky!

Entweder entfernst Du die in Deiner "Ausnahmen.txt" (vermutlich am Ende) befindliche(n) Leerzeile(n), oder (besser: und) Du änderst den Teil
01.
If bAus Then 
02.
	For Each sLine In aAusnahmen 
03.
		aAus = Split(sLine, "=") 
04.
		If InStr(sOld, "/" & aAus(0)) <> 0 Then 
05.
			sTemp = Replace(sOld, "/" & aAus(0), "/" & aAus(1)) 
06.
			Exit For 
07.
		End If 
08.
	Next 
09.
End If
auf
01.
If bAus Then 
02.
	For Each sLine In aAusnahmen 
03.
		If sLine <> "" Then 
04.
			aAus = Split(sLine, "=") 
05.
			If InStr(sOld, "/" & aAus(0)) <> 0 Then 
06.
				sTemp = Replace(sOld, "/" & aAus(0), "/" & aAus(1)) 
07.
				Exit For 
08.
			End If 
09.
		End If 
10.
	Next 
11.
End If
Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
16.11.2007 um 00:44 Uhr
Hallo bastla.
Auch ohne Häubchen erste Sahne.
Scheint ein sehr rechenintensiver Prozess gewesen zu sein, hat einige Zeit gedauert.
Das Script ist problemlos Durchgelaufen und Stichproben sehen auch vielversprechend aus.
Super Arbeit bastla, auch die Fehleridentifizierung.

Hast Du Probleme am PC
Komm nach administrator.de
Du brauchst nicht mehr zu laufen
Hier werden Sie geholfen.

Willst Du dann zu den Sprachen,
Dann mußt Du nicht nach Aachen.
Mußt nur den bastla finden
Schon die Probleme schwinden.

Dank und Gruß
Fraenky
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Visual Studio
gelöst (VB) Form-Elemente nicht wie im Entwurf angeordnet (2)

Frage von MrCount zum Thema Visual Studio ...

Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...