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 In Linkstruktur Sonderzeichen mit VB transformieren.

Mitglied: Fraenky

Fraenky (Level 1) - Jetzt verbinden

10.11.2007, aktualisiert 16.11.2007, 4910 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 ..
Ähnliche Inhalte
Visual Studio

VB: Batchprogramm: Resultat zurückgeben an VB Form (Textfeld)

gelöst Frage von nepixlVisual Studio7 Kommentare

Hallo Admins, sitze aktuell an einem kleinen Problem. Per VB wird das Tool NCFTP(.exe) gestartet, NCFTP arbeitet allerdings im ...

VB for Applications

VB-Script in VB-Script starten und Parameter übergeben

gelöst Frage von denkisVB for Applications7 Kommentare

Hallo liebe Scriptgemeinde, ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche ...

Visual Studio

Email Versenden Mit VB

gelöst Frage von UltraZzVisual Studio2 Kommentare

Hey,ich würde gerne wissen wie man mit VB eine Email versenden kann. Ich habe schon folgendes versucht,aber es hat ...

Visual Studio

VB PictureBox halbtransparent machen

gelöst Frage von Leogal0010Visual Studio3 Kommentare

Hey Administratoren! Ich habe in letzter zeit Visual Basic für mich entdeckt, bin jedoch noch nicht sonderlich geübt, also ...

Neue Wissensbeiträge
Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 5 StundenWindows 10

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 8 StundenSicherheit1 Kommentar

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Microsoft Office
TEAMS - Skype for business
Tipp von Nebellicht vor 8 StundenMicrosoft Office

Hallo, ms ersetzt Skype for business durch TEAMS. Also, nicht wundern wenn mit der OFFICE365 Umgebung kein Skype for ...

Windows 10

Windows 10: Cortana und die Suche gehen bald wieder eigene Wege

Information von Frank vor 12 StundenWindows 102 Kommentare

Microsoft hat einen neuen Insider Build von Windows 10 veröffentlicht (Fast Ring, Version 18317), wo die digitale Assistentin "Cortana" ...

Heiß diskutierte Inhalte
Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Switche und Hubs
Medienkonverter mit 12 oder 24 Ports gesucht
Frage von wmuellerSwitche und Hubs20 Kommentare

Guten Morgen, ich bin auf der Suche nach einem größeren Medienkonverter, der "stumpf" 1:1 die Ports auf über ein ...

Windows Server
Client in die Domäne einbinden - Allgemeine Frage dazu
gelöst Frage von RalphTWindows Server18 Kommentare

Moin, ich habe 2 DCs in einer Hauptstelle und 2 DCs in einer Nebenstelle. Ich bringe in der Hauptstelle ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1018 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...