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 VBScript: Einzelne Zeile in einer Datei ersetzen (restlicher Inhalt bleibt unangetastet)

Mitglied: GizmotroniX

GizmotroniX (Level 1) - Jetzt verbinden

18.11.2019 um 12:59 Uhr, 449 Aufrufe, 36 Kommentare

Hallo zusammen,

ich versuche seit 3 Tagen für einen speziellen Anwendungsfall in unserem Unternehmen ein Script zu erstellen. Ich habe mit VBScript selbst keine Praxis, kann aber bestehende Scripte halbwegs verstehen und auch anpassen.

Die Aufgabenstellung ist folgende:
Für eine unserer Druckmaschinen müssen Dateien die Informationen zum Druckauftrag enthalten von Umlauten oder Sonderzeichen befreit werden. Sowohl im Dateinamen als auch in der Datei selbst und zwar genau in Zeile 6. Problem dabei ist nur, die Datei darf sich vom Inhalt und Formatierung selbst nicht verändern sondern es soll nur Zeile 6 bearbeitet werden.

Ich habe ein Script nun soweit erstellt was im Grunde auch das gewünschte Ergebnis bringt allerdings nicht fehlerfrei. Die Ursprungsdatei ist 18.623 KB groß und lt. Notepad++ umfasst diese 55.275 Zeilen. Die nach dem Script gespeicherte Datei ist allerdings 37.294 KB und 58.179 Zeilen groß. Kann zwar von der Maschine eingelesen werden, allerdings kommt nur eine schwarze Fläche raus und kein gewünschtes Druckbild.

So sieht der Inhalt der Datei aus:
screen_filecontent - Klicke auf das Bild, um es zu vergrößern

Und das wäre mein aktuelles Script dafür (selbst zusammengebastelt aus div. Beispielen im Netz

01.
sOrdner = "C:\Test\"
02.
'sOrdner = "E:\XShare\GenericPressRoot\M600D\"
03.

04.
' Funktion zum Ersetzen von Sonderzeichen und Umlaute
05.
Function normalize_str(strRemove)
06.
    Dim arrWrapper(1)
07.
    Dim arrReplace(18)
08.
    Dim arrReplaceWith(18)
09.
    
10.
    arrWrapper(0) = arrReplace
11.
    arrWrapper(1) = arrReplace
12.
    
13.
    ' Replace
14.
    arrWrapper(0)(0) = "Ä"
15.
    arrWrapper(0)(1) = "Ö"
16.
    arrWrapper(0)(2) = "Ü"
17.
    arrWrapper(0)(3) = "ß"
18.
    arrWrapper(0)(4) = "ä"
19.
    arrWrapper(0)(5) = "ö"
20.
    arrWrapper(0)(6) = "ü"
21.
    arrWrapper(0)(7) = "~"
22.
    arrWrapper(0)(8) = "’"
23.
    arrWrapper(0)(9) = "'"
24.
    arrWrapper(0)(10) = "/" 
25.
    arrWrapper(0)(11) = "|"
26.
    arrWrapper(0)(12) = "&"
27.
	arrWrapper(0)(13) = "!"
28.
	arrWrapper(0)(14) = "?"
29.
	arrWrapper(0)(15) = "§"
30.
	arrWrapper(0)(16) = "$"
31.
	arrWrapper(0)(17) = "="
32.
	arrWrapper(0)(18) = "#"
33.
     
34.
     ' With
35.
    arrWrapper(1)(0) = "AE"
36.
    arrWrapper(1)(1) = "OE"
37.
    arrWrapper(1)(2) = "UE"
38.
    arrWrapper(1)(3) = "ss"
39.
    arrWrapper(1)(4) = "ae"
40.
    arrWrapper(1)(5) = "oe"
41.
    arrWrapper(1)(6) = "ue"
42.
    arrWrapper(1)(7) = "_"
43.
    arrWrapper(1)(8) = "_"
44.
    arrWrapper(1)(9) = "_"
45.
    arrWrapper(1)(10) = "_" 
46.
    arrWrapper(1)(11) = "_"
47.
    arrWrapper(1)(12) = "_"
48.
	arrWrapper(1)(13) = "_"
49.
	arrWrapper(1)(14) = "_"
50.
	arrWrapper(1)(15) = "_"
51.
	arrWrapper(1)(16) = "_"
52.
	arrWrapper(1)(17) = "_"
53.
	arrWrapper(1)(18) = "_"
54.
    
55.
    For N = 0 To 18
56.
        ' 1: Start find from 1st character
57.
        ' -1: Find until string does not End
58.
        ' 0: binary comparision. Respect uppercase from lowercase.
59.
        strRemove = Replace(strRemove, arrWrapper(0)(N), arrWrapper(1)(N), 1, -1, 0)
60.
    Next
61.
    
62.
    normalize_str = strRemove
63.
End Function
64.

65.
Const ForReading = 1
66.
Const ForWriting = 2
67.
Const TristateUseDefault = -2
68.
intMaxZeile = 6
69.

70.
Set fso = CreateObject("Scripting.FileSystemObject")
71.
Set objRegEx = CreateObject("VBScript.RegExp")
72.
' Wir suchen nach dem Wort  CIP3AdmJobName
73.
objRegEx.Pattern = "CIP3AdmJobName"
74.

75.
ProcessFolder fso.GetFolder(sOrdner)
76.

77.
Sub ProcessFolder(ThisFolder)
78.
sPath = ThisFolder.Path
79.
If InStr(sPath, "System Volume Information") = 0 Then
80.
	For Each File In ThisFolder.Files
81.
		sOld = File.Name
82.
		sNew = normalize_str(sOld)
83.
		' sOld ist der alte originale Dateiname
84.
		' sNew ist der Dateiname ohne Sonderzeichen oder Umlaute aus der Tabelle oben
85.
	
86.
		If (sNew <> File.Name) then
87.
		  File.Move (File.ParentFolder & "\" & sNew)
88.
		  ' wenn sNew unterschiedlich zum alten File.Name ist dann wird die Datei umbenannt
89.
		end if
90.
		
91.
		Set objFile = fso.OpenTextFile(File.ParentFolder & "\" & sNew, ForReading, False, TriStateUseDefault)
92.
		' wir oeffnen die oben umbenannte Datei um daraus zu lesen
93.
		count = 0
94.
		' Treffer standardmaessig auf null
95.
		Do Until objFile.AtEndOfStream
96.
		   ' lauf die Schleife bis zum Ende des Datei-Stream
97.
		   If count = 1 Then
98.
			Exit Do
99.
			' wenn die Schleife einen Treffer hat dann stoppt sie - da es sonst bei 60000 Zeilen zu lange dauert
100.
		   End If
101.
		   strSearchString = Mid(objFile.ReadLine,2)
102.
		   ' wir beschneiden den gefunden String um das erste Zeichen / damit es nicht von der Funktion in ein _ verwandelt wird
103.
		   Set colMatches = objRegEx.Execute(strSearchString)
104.
		   ' wir ermitteln die Ergebnisse indem wir jede Zeile mit dem Suchmuster abgleichen
105.
		   If colMatches.Count > 0 Then
106.
		    ' gibt es mehr als null Treffe dann mache
107.
		    For Each strMatch in colMatches
108.
			' fuer jeden gefundenen Eintrag
109.
			sOldJob = "/" & strSearchString
110.
			' speicher den Inhalt der originalen Zeile CIP3AdmJobName in die Variable sOldJob und geben wieder in / an den Anfang
111.
			sJobNew = normalize_str(strSearchString)
112.
			' schicke das ermittelte Ergebnis durch unseren Konverter um Umlaute und Sonderzeichen umzuwandeln
113.
			sJobNew = "/" & sJobNew
114.
			' wir speichern den umgewandelten Wert in eine Variable sJobNew und geben wieder ein / an den Anfang
115.
			Wscript.Echo sJobNew
116.
			count = count + 1
117.
			' Zaehler wird hochgesetzt bei jedem Treffer (sollte nur einen geben)
118.
		  Next
119.
		 End If
120.
		Loop
121.
		objFile.Close
122.
		
123.
		WScript.Echo sOldJob
124.
		
125.
		intZeile = 1
126.
		Set objFile = fso.OpenTextFile(File.ParentFolder & "\" & sNew, ForReading, False, TriStateUseDefault)
127.
		Set objDateiSchreiben = fso.CreateTextFile(File.ParentFolder & "\_N_" & sNew, True, True)
128.
		
129.
		Do Until objFile.AtEndOfStream 'So lange lesen bis zum Schluss
130.
        strZeile = objFile.ReadLine
131.
        
132.
        If intZeile <= intMaxZeile And InStr(strZeile, sOldJob) Then 'Falls das Wort suchwort in den erst intMaxZeilen Zeilen vorkommt, dann ersetze diese Zeile
133.
                objDateiSchreiben.WriteLine sJobNew
134.
        Else 'sonst Schreibe einfach die Zeile
135.
                objDateiSchreiben.WriteLine strZeile
136.
        End If
137.
        
138.
        intZeile = intZeile + 1
139.
		Loop
140.

141.
		objFile.Close
142.
		objDateiSchreiben.Close
143.

144.
	Next
145.
End If
146.
End Sub
Hat hier jemand Tipps und Ideen wie man das Script adaptieren kann oder viell. eine komplett andere Idee wie man dies bewerkstelligen kann ?

Das VBS kann ich dem "Workflow" der diese Datei erzeugt am Ende anhängen damit dies dann auch automatisiert abläuft - daher VBS. Also der Workflow erzeugt die Datei dann muss ich sie mit dem Script überarbeiten und danach wird sie an die Druckmaschine gesendet.

Danke !

lG
Roland
36 Antworten
Mitglied: emeriks
18.11.2019 um 13:05 Uhr
Hi,
wenn ich das richtig sehe, dann ist das keine reine Text-Datei, sondern enthält auch Binär-Code. Also darfst Du diese auch nur binär bearbeiten. Also nicht Zeichen ersetzen, sondern Bytes.

Bsp. wie man mit Binärdateien arbeitet: https://www.motobit.com/tips/detpg_read-write-binary-files/

Byte für Byte einlesen und in eine neue Datei schreiben. Dabei ggf. betreffede Bytes ersetzen.

E.
Bitte warten ..
Mitglied: Fennek11
18.11.2019, aktualisiert um 13:41 Uhr
In VBA gibt es OPEN file FOR BINARY as #1 um Binar-Dateien zu öffnen. Aber VBA ist recht alt und die Unterstützung von utf-8 ist schlecht. Ist es möglich eine Datei hochzuladen? (http://www.office-loesung.de/p/viewforum.php?f=166). Mit VBS habe ich keine Erfahrung, aber meistens kann VBA in VBS umgeschrieben werden. Käme auch Powershell in betracht?

Noch eine kulturelle Frage: Wäre ein 5-Zeiler akzeptabel oder müssen es unbedingt 50 Zeilen sein?
Bitte warten ..
Mitglied: GizmotroniX
18.11.2019 um 14:39 Uhr
Hallo Fennek11,

klar, hier ist eine Datei:
https://www.dropbox.com/s/bnee1tyl6q74k5p/PB999994%20Kaufhaeus%20Tueroel ...

5-Zeiler oder 50 Zeilen ist egal, Hauptsache es tut was es soll.
Ich denke halt VBS ist am Besten weil das Script auf einem Server ausgeführt wird und es bei einem anderen Workflow bereits ein solche Konstellation gibt - also wo ein VBS am Ende aufgerufen wird. Somit wärs einheitlich und besser nachvollziehbar in späterer Folge.
Bitte warten ..
Mitglied: GizmotroniX
18.11.2019 um 14:41 Uhr
Hallo emeriks,

Danke mal für die Info. Puh, da muss ich mich jetzt wieder einlesen wie ich das in das bestehende Script reinnehmen kann ohne wieder von null zu beginnen.

Klar, klingt logisch dass es für Binäre Dateien andere Aufrufe gibt - ich denke auch dass das Problem ist weil er dann beim zeilenweisen Lesen halt auch nicht weiß wo ist die Zeile aus.... und dann erzeugt er mehr Zeilen als eigentlich da sind.
Bitte warten ..
Mitglied: Fennek11
18.11.2019 um 15:18 Uhr
sorry, ich lade keine Dateien aus der drop-box.

Hier ein Ansatz mit Powershell:

01.
$fin = 'C:\Users\xxx\Desktop\test.txt'
02.
$fout = 'C:\Users\xxx\Desktop\test1.txt'
03.

04.
$Tx = get-content $fin
05.

06.
$DD = New-Object system.collections.hashtable
07.
$DD.add('ä', 'ae')
08.
$DD.add('ö', 'oe')
09.
$DD.add('ü', 'ue')
10.
$DD.add('ß', 'ss')
11.
$DD.add('Ä', 'Ae')
12.
$DD.add('Ö', 'Oe')
13.
$DD.add('Ü', 'Ue')
14.

15.
foreach ($k in $DD.Keys) {
16.
    $Tx = $tx.replace($k, $DD[$k])}
17.
Set-Content $fout -Value $Tx
Bitte warten ..
Mitglied: emeriks
18.11.2019, aktualisiert um 15:31 Uhr
Zitat von Fennek11:
Bis Du sicher, dass Get-Content so einfach mit Binär-Daten klar kommt? Ich denke, da fehlt zum Einen "-Encoding Byte" und zum Anderen dürfte das bei größeren Dateien recht langsam sein. Da wäre es besser, direkt über .NET zu gehen.
Bitte warten ..
Mitglied: Fennek11
18.11.2019 um 16:12 Uhr
mangels Datei hatte ich es nur mit UTF8-Text geprüft. Nach dem Bild am Anfang zu urteilen ist die Datei nicht so groß, zehntel Sekunden spielen eh keine Rolle.
Bitte warten ..
Mitglied: Fennek11
18.11.2019, aktualisiert um 22:50 Uhr
Einen Code "blind" zu schreiben ist immer ein Risiko:

01.
$fin = 'C:\Users\xxxx\Desktop\test.txt' # <<<< anpassen >>>>
02.
$fout = 'C:\Users\xxxx\Desktop\test1.txt'        # <<<< anpassen >>>>
03.
$TT = 100 # Anzahl der Zeichen in ersten 10 Zeilen
04.

05.
$Ta = get-content $fin -Raw # <<<<<<<<<<<<<< Raw auch binary >>>>>>>>
06.
$Tx = $Ta.Substring(0, $TT)
07.

08.
$DD = New-Object system.collections.hashtable
09.
$DD.add('ä', 'ae')
10.
$DD.add('ö', 'oe')
11.
$DD.add('ü', 'ue')
12.
$DD.add('ß', 'ss')
13.
$DD.add('Ä', 'Ae')
14.
$DD.add('Ö', 'Oe')
15.
$DD.add('Ü', 'Ue')
16.

17.
foreach ($k in $DD.Keys) {$Tx = $Tx.replace($k, $DD[$k])}
18.

19.
$Tx = $Tx -replace "['~´\/|&!\?§$=#]", '_' 
20.

21.
Write-Host "--------------------- `n "
22.
$Tx 
23.
$Tx = $Tx + $Ta.Substring($TT+1)
24.
Set-Content $fout -Value $Tx
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 09:10 Uhr
Hallo Fennek11,

Danke mal für die Powershell Variante.
Die erstellte Datei "test1.ppf" sieht zumindest von Dateigröße und Zeilenumfang ident aus mit den Originaldatei "test.ppf". Allerdings klappt die Umwandlung der Umlaute nicht und das "/" am Zeilenanfang oder das "?" in Zeile 1 soll nicht ersetzt werden.

screen - Klicke auf das Bild, um es zu vergrößern

Wenn das mal klappt dann fehlt noch die Umbenennung des Dateinamen selbst (das Script soll alle Dateien des angegeben Ordner verarbeiten) und am Ende soll die Datei unter gleichem Namen gespeichert werden (also test.ppf wird am Ende nach dem Replace wieder zu test.ppf).

Danke !

lG Roland
Bitte warten ..
Mitglied: Fennek11
19.11.2019 um 09:26 Uhr
ohne das selbst an Daten, die dem Original nahe kommen, zu testen, kann es nicht werden. Noch einmal, warum lädst Du nicht die ersten 100 Zeilen einer echte Datei an dem angegebenen link hoch?
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 09:36 Uhr
Zitat von Fennek11:

>warum lädst Du nicht die ersten 100 Zeilen einer echte Datei an dem angegebenen link hoch?

ich hab nicht durchschaut wo ich das hochladen kann ? Ich komme auf die Forenübersicht von office-loesungen.de - dort gibts zwar einen Sticky Thread mit "Dateien hochladen" wo beschrieben ist wie man zu Beiträgen im Forum Dateien hochladen kann aber dazu muss man angemeldet sein.

Soll ich daraus schließen dass ich mich im anderen Forum registrieren, einen Beitrag erstellen und die Datei dort anhängen soll worauf ich dann von hier aus wieder verlinke ? Das ist etwas übertrieben und geht mit Sicherheit auch auf anderem Weg einfacher ...
Bitte warten ..
Mitglied: Fennek11
19.11.2019 um 10:13 Uhr
ja, abgesehen davon, dass ich dropbox prinzipiell ablehne, hätte ich mich dort auch registieren müssen.

In dem genannten Forum kann man auch ohne Anmeldung posten, (bitte in code-tags, also [code] xxx [/code]) vielleicht geht das auch mit binär Daten. Probiere es aus.
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 10:28 Uhr
http://www.office-loesung.de/p/viewtopic.php?f=166&t=823131

Ich habs versucht, soweit ich es aber mit der Original Datei vergleiche wird es in den Code Tags schon anders dargestellt. Ich denke also eine Übermittlung der kompletten Originaldatei macht mehr Sinn. Auf welchem Weg auch immer ... gibts was anderes außer Dropbox und das andere Forum ?
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 11:47 Uhr
01.
Get-ChildItem 'E:\GizmoTronix' -Filter *.ppf -File | %{
02.
    [regex]::Replace((Get-Content $_.FullName -Raw),'(?im)(?<=/CIP3AdmJobName\s*\()([^\)]+)(?=.*)',{
03.
        param($m)
04.
        return [regex]::Replace($m.Value,'(?i)^com[1-9]|^lpt[1-9]|^con|^nul|^prn|[\\/:?<>|"*äöüß]',{param($m2) switch -CaseSensitive ($m2){'ä'{'ae'};'ü'{'ue'};'ö'{'oe'};'ß'{'ss'};'Ä'{'Ae'};'Ü'{'Ue'};'Ö'{'Oe'};default{'_'}}})
05.
    }) | Set-Content $_.FullName -Force
06.
}
Gruß v.
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 11:55 Uhr
Hallo voucher,

ich habs grad getestet, den Umlaut lässt er stehen, das / bei 3/2019 hat er auf _ ersetzt.

01.
/CIP3AdmJobName (PB999994 Kaufhaus Türol 3/2019 TEST-8) def
lG
Roland
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 12:03 Uhr
Habe es hier mit deiner Original-Datei aus der Dropbox getestet, funktioniert einwandfrei!

screenshot - Klicke auf das Bild, um es zu vergrößern

Ich tippe auf veraltete PS.
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 12:05 Uhr
OK dann fällt wohl Powershell generell raus weil ich hab hier ein Windows 10 1809 und wenn das "veraltet" ist dann ist das auf dem Server 2012 wo es tatsächlich laufen soll wohl noch problematischer.
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 12:08 Uhr
Zitat von GizmotroniX:

OK dann fällt wohl Powershell generell raus weil ich hab hier ein Windows 10 1809 und wenn das "veraltet" ist dann ist das auf dem Server 2012 wo es tatsächlich laufen soll wohl noch problematischer.
Nö wende es richtig dann klappt das auch . Läuft hier auch auf einem 2012R2 ohne Probleme. Ich habe ja deine Originaldatei verwendet, also läuft bei deiner Anwendung was falsch ...

Wieso ihr das nicht im Quellprozess gleich ausmerzt versteht wohl nur ihr.
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 12:12 Uhr
Setz mal das Encoding bei Get-Content passend dann sollte es auch bei dir laufen...
01.
Get-ChildItem 'E:\GizmoTronix' -Filter *.ppf -File | %{
02.
    [regex]::Replace((Get-Content $_.FullName -Raw -Encoding Default),'(?im)(?<=/CIP3AdmJobName\s*\()([^\)]+)(?=.*)',{
03.
        param($m)
04.
        return [regex]::Replace($m.Value,'(?i)^com[1-9]|^lpt[1-9]|^con|^nul|^prn|[\\/:?<>|"*äöüß]',{param($m2) switch -CaseSensitive ($m2){'ä'{'ae'};'ü'{'ue'};'ö'{'oe'};'ß'{'ss'};'Ä'{'Ae'};'Ü'{'Ue'};'Ö'{'Oe'};default{'_'}}})
05.
    }) | Set-Content $_.FullName -Force
06.
}
Alternativ kann man es nat. auch direkt auf Bitebene modifizieren (aufwendiger).
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 13:15 Uhr
Geht auch nicht wenn ich das Encoding ändere - bei mir bleiben die Umlaute immer erhalten.
Ich habe PSVersion 5.1.17763.771
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 14:05 Uhr
Dann pass das Encoding mal an (UTF8, Unicode usw.), geht hier wie gesagt einwandfrei auf allen Kisten, ansonsten hast du uns nicht das von dir verwendete File zur Verfügung gestellt. Wenn du darin natürlich schon vorher rumpfuschst und erneut anspeicherst führt das ganze hier zu nichts.

Ich bin raus, läuft.
Case solved.
Bitte warten ..
Mitglied: emeriks
19.11.2019 um 14:21 Uhr
Zitat von 141965:
Case solved.
Was soll der Käse?
Bitte warten ..
Mitglied: GizmotroniX
19.11.2019 um 14:39 Uhr
Zitat von 141965:

Wenn du darin natürlich schon vorher rumpfuschst und erneut anspeicherst führt das ganze hier zu nichts.


Ach ist das so ? Da weißt du aber mehr als ich ...
Also das ist 1:1 zu gleiche Datei die ich verwende zum Testen welche auch in der Dropbox liegt.

Encoding habe ich schon alles durchprobiert was es an Möglichkeiten gibt - die Datei ist ANSI, also wirds auch nicht hilfreich sein dass in UTF8 oder ASCII oder ähnlichem zu encoden wo ich ohnehin schon Probleme habe das es am Ende verarbeitet werden kann. Aber wie gesagt egal was ich dort angebe es klappt mit den Umlauten nicht. Auch nicht in Powershell 6.x dass ich zwischenzeitlich versucht habe.
Bitte warten ..
Mitglied: 141965
19.11.2019, aktualisiert um 17:07 Uhr
Damit du siehst das ich hier keine Märchen erzähle, Videobeweis mit Originaldatei (SHA1 Hash: 935b2ba0c9e09ee0e7a98cb5087be826bc3f8e8f):
https://we.tl/t-M7H9oxafOg

Datei hat ein völlig normales Encoding für den Umlaut (ü = 0xFC) auch im Hexeditor geprüft

screenshot - Klicke auf das Bild, um es zu vergrößern

File Compare nach Skriptdurchlauf, links Original, rechts nach Skriptanwendung.

screenshot - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: rubberman
LÖSUNG 19.11.2019, aktualisiert um 22:36 Uhr
Oh, good old VBScript.
Problem ist, dass alles was irgendwie als Zeilenumbruch verstanden wird, für ReadLine als Abbruchkriterium herangezogen wird. WriteLine macht dann daraus einen Windows Zeilenumbruch bestehend aus den 2 Zeichen Carriage Return und Line Feed. Aber selbst die Plaintextzeilen am Anfang sind nur durch ein einfaches Line Feed Zeichen abgeschlossen.

Ich hab mal deine normalize_str Funktion übernommen, wobei man die auch etwas vereinfachen könnte. Ist aber egal für die 2 Strings die du drüber jagst. Rest ist mehr oder weniger neu. ADO Streams sind hier der Schlüssel, um Binärdaten in einem VBScript zu verarbeiten.

Steffen

01.
Option Explicit
02.

03.
Const sFolder = "C:\Test\"
04.
Const sFileExt = "ppf"
05.

06.
Function normalize_str(strRemove)
07.
    Dim arrWrapper(2)
08.
    Dim arrReplace(19)
09.
    Dim arrReplaceWith(19)
10.
    Dim N
11.

12.
    arrWrapper(0) = arrReplace
13.
    arrWrapper(1) = arrReplaceWith
14.

15.
    ' Replace
16.
    arrWrapper(0)(0) = "Ä"
17.
    arrWrapper(0)(1) = "Ö"
18.
    arrWrapper(0)(2) = "Ü"
19.
    arrWrapper(0)(3) = "ß"
20.
    arrWrapper(0)(4) = "ä"
21.
    arrWrapper(0)(5) = "ö"
22.
    arrWrapper(0)(6) = "ü"
23.
    arrWrapper(0)(7) = "~"
24.
    arrWrapper(0)(8) = "’"
25.
    arrWrapper(0)(9) = "'"
26.
    arrWrapper(0)(10) = "/"
27.
    arrWrapper(0)(11) = "|"
28.
    arrWrapper(0)(12) = "&"
29.
    arrWrapper(0)(13) = "!"
30.
    arrWrapper(0)(14) = "?"
31.
    arrWrapper(0)(15) = "§"
32.
    arrWrapper(0)(16) = "$"
33.
    arrWrapper(0)(17) = "="
34.
    arrWrapper(0)(18) = "#"
35.

36.
     ' With
37.
    arrWrapper(1)(0) = "AE"
38.
    arrWrapper(1)(1) = "OE"
39.
    arrWrapper(1)(2) = "UE"
40.
    arrWrapper(1)(3) = "ss"
41.
    arrWrapper(1)(4) = "ae"
42.
    arrWrapper(1)(5) = "oe"
43.
    arrWrapper(1)(6) = "ue"
44.
    arrWrapper(1)(7) = "_"
45.
    arrWrapper(1)(8) = "_"
46.
    arrWrapper(1)(9) = "_"
47.
    arrWrapper(1)(10) = "_"
48.
    arrWrapper(1)(11) = "_"
49.
    arrWrapper(1)(12) = "_"
50.
    arrWrapper(1)(13) = "_"
51.
    arrWrapper(1)(14) = "_"
52.
    arrWrapper(1)(15) = "_"
53.
    arrWrapper(1)(16) = "_"
54.
    arrWrapper(1)(17) = "_"
55.
    arrWrapper(1)(18) = "_"
56.

57.
    For N = 0 To 18
58.
        ' 1: Start find from 1st character
59.
        ' -1: Find until string does not End
60.
        ' 0: binary comparision. Respect uppercase from lowercase.
61.
        strRemove = Replace(strRemove, arrWrapper(0)(N), arrWrapper(1)(N), 1, -1, 0)
62.
    Next
63.

64.
    normalize_str = strRemove
65.
End Function
66.

67.
Dim objFSO, objFolder, objFile, sFile, sLine
68.
Dim objADOStreamIn1, objADOStreamIn2, objADOStreamOut, objFileStream
69.
Dim newLine, byteCount, lineCount
70.
Const adTypeText = 2
71.
Const adTypeBinary = 1
72.
Const adSaveCreateOverWrite = 2
73.
Const ForReading = 1
74.
Const ForWriting = 2
75.
Const TristateUseDefault = -2
76.
Const sObj = "/CIP3AdmJobName"
77.
Const iMaxLines = 6
78.
newLine = vbLf
79.

80.
Set objFSO = CreateObject("Scripting.FileSystemObject")
81.
Set objFolder = objFSO.GetFolder(sFolder)
82.

83.
For Each objFile In objFolder.Files
84.
  sFile = objFile.Name
85.
  ' Wenn Dateiendung passt
86.
  If StrComp(objFSO.GetExtensionName(sFile), sFileExt, vbTextCompare) = 0 Then
87.
    ' Sonderzeichen ersetzen und umbenennen
88.
    sFile = normalize_str(sFile)
89.
    objFile.Move(objFile.ParentFolder & "\" & sFile)
90.

91.
    Set objADOStreamIn1 = CreateObject("ADODB.Stream") ' original Dateiinhalt
92.
    objADOStreamIn1.Type = adTypeBinary
93.
    objADOStreamIn1.Open
94.

95.
    Set objADOStreamIn2 = CreateObject("ADODB.Stream") ' geänderter Text
96.
    objADOStreamIn2.Type = adTypeText
97.
    objADOStreamIn2.Charset = "us-ascii"
98.
    objADOStreamIn2.Open
99.

100.
    Set objADOStreamOut = CreateObject("ADODB.Stream") ' Ausgabe
101.
    objADOStreamOut.Type = adTypeBinary
102.
    objADOStreamOut.Open
103.

104.
    ' Komplette Datei binär einlesen
105.
    objADOStreamIn1.LoadFromFile objFile.Path
106.

107.
    ' Dateistream öffnen
108.
    Set objFileStream = objFile.OpenAsTextStream(ForReading, TriStateUseDefault)
109.
    byteCount = 0
110.
    lineCount = 0
111.
    Do Until objFileStream.AtEndOfStream
112.
      ' raus wenn mehr als 6 Zeilen gelesen wurden aber die Objektkennung nicht gefunden wurde
113.
      If lineCount > iMaxLines Then Exit Do
114.
      sLine = objFileStream.ReadLine
115.
      ' gelesene Bytes
116.
      byteCount = byteCount + Len(sLine) + Len(newLine)
117.
      ' gelesene Zeilen
118.
      lineCount = lineCount + 1
119.
      ' wenn Objektkennung gefunden wurde
120.
      If InStr(1, sLine, sObj, vbBinaryCompare) = 1 Then
121.
        ' Sonderzeichen entfernen und in den Stream schreiben
122.
        sLine = normalize_str(sLine)
123.
        objADOStreamIn2.WriteText "/" & Mid(sLine, 2)
124.
        objADOStreamIn2.WriteText newLine
125.
        ' Raus hier
126.
        Exit Do
127.
      End If
128.
      ' sonst Zeile in den Stream schreiben
129.
      objADOStreamIn2.WriteText sLine
130.
      objADOStreamIn2.WriteText newLine
131.
    Loop
132.

133.
    objFileStream.Close
134.

135.
    ' Position in den Originaldaten ändern (Anzahl zu überspringende Zeichen)
136.
    objADOStreamIn1.Position = byteCount
137.

138.
    ' Textstream zu Binärstream ändern
139.
    objADOStreamIn2.Position = 0
140.
    objADOStreamIn2.Type = adTypeBinary
141.

142.
    ' Ausgabestream aus geändertem Text und restlichen Binärdaten aufbauen
143.
    objADOStreamOut.Write objADOStreamIn2.Read
144.
    objADOStreamOut.Write objADOStreamIn1.Read
145.

146.
    ' Datei überschreiben
147.
    objADOStreamOut.SaveToFile objFile.Path, adSaveCreateOverWrite
148.
    objADOStreamOut.Close
149.
    objADOStreamIn2.Close
150.
    objADOStreamIn1.Close
151.
  End If
152.
Next
Bitte warten ..
Mitglied: GizmotroniX
20.11.2019 um 07:56 Uhr
Hallo Steffen,

Danke für deine Mühe. Also das Ersetzen klappt soweit - er ersetzt zwar nur Ä durch A oder ö durch o und nicht wie in der Funktion definiert durch oe oder Ae. Ich vermute weil es auf Byte Basis erfolgt ?

Kann man das noch anpassen dass er beim Abspeichern den Dateinamen selbst auch durch die normalize_str Funktion jagt damit auch im Dateinamen die Umlaute und Sonderzeichen umgewandelt werden ?

Danke !
Bitte warten ..
Mitglied: rubberman
20.11.2019, aktualisiert um 08:40 Uhr
Kann ich nicht nachvollziehen, genauso wenig wie @141965 in seiner PS Lösung. Sollte deine Testdatei nicht dem entsprechen was du in die Dropbox geladen hast, werde ich nicht helfen können. Ich habe mir die Detailfragen, wie Zeichencodierung und verwendeter Zeilenumbruch, mit dem HEX Editor aus dieser Datei selbst beantwortet. Sollte die Realität anders aussehen, geht's in die Hose. Lade dir doch die Datei mal selbst aus der Dropbox und schau dir an ob/wo die Unterschiede liegen. Könnte sein dass dort etwas nicht mehr dem Original entspricht, weil du die Datei nicht in ein ZIP Archiv gepackt hast bevor du sie hochgeladen hast.

Der Effekt den du gerade siehst, hat wahrscheinlich damit zu tun, dass deine Ersetzungsfunktion in deinem Test gar nicht bei Umlauten wirksam wird. Ggf. weil die Zeichencodierung bei dir UTF-8 oder eine völlig andere ist. Dann kommt nur die Charset Eigenschaft des ADO Streams zum tragen, die hier vermutlich aus Umlauten die ASCII Zeichen macht, die denen am nächsten kommen.
Also, nein, ohne reale Datei, die den Fehler reproduzieren kann, ist das nur im Trüben fischen. Keine Ahnung wie ich dir da helfen könnte. Sorry.

Steffen

PS: Ach ja, sollte die Datei OK sein, du aber dein Script nicht ANSI (Windows-1252) codiert haben, sondern ggf. UTF-8, geht es natürlich auch in die Hose.
Bitte warten ..
Mitglied: GizmotroniX
20.11.2019 um 09:00 Uhr
Ach, Asche auf mein Haupt. Sorry, deine letzte Zeile war die Lösung.
Ich hatte das Thema schon und bin wieder drübergestolpert. Mit ANSI klappts natürlich ohne Probleme mit den Umlauten. Danke noch für den Hinweis.

Somit wäre das Ding mit den Umlauten durch, muss ich nur noch schaffen das die Datei entsprechend ohne Umlaute im Namen gespeichert wird.
Bitte warten ..
Mitglied: emeriks
20.11.2019 um 09:15 Uhr
Zitat von GizmotroniX:
Somit wäre das Ding mit den Umlauten durch, muss ich nur noch schaffen das die Datei entsprechend ohne Umlaute im Namen gespeichert wird.
Das wäre dann sicher der komplizierteste Teil ...
Bitte warten ..
Mitglied: emeriks
20.11.2019, aktualisiert um 09:37 Uhr
Am Rande:
Dass die neue Datei zwangsläufig größer sein wird, als das Original, ist Dir klar? Nur mal wegen dem Vergleich der Längen und so.
Wenn man ein Zeichen durch zwei ersetzt, dann wird die Datei um min. 1 Byte größer.
Bitte warten ..
Mitglied: rubberman
20.11.2019 um 09:29 Uhr
Zitat von GizmotroniX:
muss ich nur noch schaffen das die Datei entsprechend ohne Umlaute im Namen gespeichert wird.
Der Teil mit dem Umbenennen der Datei ist aber nach wie vor im Script und hat bei mir funktioniert.

Steffen
Bitte warten ..
Mitglied: GizmotroniX
20.11.2019 um 11:09 Uhr
@rubberman
Alles gut, auch der Dateiname wird korrekt umbenannt. Ich werde das Morgen mal in Verbindung mit der Druckmaschine testen und hoffe dass das Thema damit erledigt ist. Vielen Dank nochmal für deine Mühe und Geduld mit den Fragen.

@emeriks
Ich hoffe dass sich diese kleine Änderung in der Größe nicht auswirkt, genau weiß ich es erst nach dem Test an der Maschine wie die Datei eingelesen wird.

@141965
Danke auch Dir nochmal für deinen Einsatz !
Bitte warten ..
Mitglied: rubberman
20.11.2019 um 12:02 Uhr
Zitat von GizmotroniX:
Ich hoffe dass sich diese kleine Änderung in der Größe nicht auswirkt

Nach allem was ich gesehen habe, könntest du Glück haben. Anders als bei PDF, sehe ich bei deinem Postscript basierten Format keine Offsets zu den Objekten. Die einzige angegebene Größe ist die des CIP3PreviewImage Objekts (also die der Binärdaten). Dort ändert sich aber nichts.

Steffen
Bitte warten ..
Mitglied: GizmotroniX
03.12.2019 um 14:12 Uhr
So Leute, ich bin euch noch ne Rückmeldung schuldig. Es hat leider länger gedauert bis wir das Script nun produktiv testen konnten aber die Version von @rubberman funktioniert wie gewünscht. Alle sind happy und ich sage nochmal Danke für die Unterstützung.
Bitte warten ..
Mitglied: rubberman
LÖSUNG 03.12.2019 um 18:18 Uhr
Na super Wie du gesehen hast, habe ich anhand deiner Datei den Zeilenumbruch als Line Feed Zeichen angenommen und hart im Code stehen. Sollte das bei anderen Dateien mal zu Problemen führen, kannst du ein Stück in die Datei hinein lesen und prüfen was du vorfindest.
01.
Option Explicit
02.

03.
Const sFolder = "C:\Test\"
04.
Const sFileExt = "ppf"
05.

06.
Function GetNewLine(ByRef objFile)
07.
  Dim objFileStream, sChar, sCharBefore
08.
  GetNewLine = ""
09.
  Set objFileStream = objFile.OpenAsTextStream()
10.
  If objFileStream Is Nothing Then Exit Function
11.
  sCharBefore = ""
12.
  Do While Not objFileStream.AtEndOfStream
13.
    sChar = objFileStream.Read(1)
14.
    If sChar = vbLf Then
15.
      If sCharBefore = vbCr Then GetNewLine = vbCrLf Else GetNewLine = vbLf
16.
      Exit Do
17.
    End If
18.
    sCharBefore = sChar
19.
  Loop
20.
  objFileStream.Close
21.
End Function
22.

23.
Function normalize_str(strRemove)
24.
    Dim arrWrapper(2)
25.
    Dim arrReplace(19)
26.
    Dim arrReplaceWith(19)
27.
    Dim N
28.

29.
    arrWrapper(0) = arrReplace
30.
    arrWrapper(1) = arrReplaceWith
31.

32.
    ' Replace
33.
    arrWrapper(0)(0) = "Ä"
34.
    arrWrapper(0)(1) = "Ö"
35.
    arrWrapper(0)(2) = "Ü"
36.
    arrWrapper(0)(3) = "ß"
37.
    arrWrapper(0)(4) = "ä"
38.
    arrWrapper(0)(5) = "ö"
39.
    arrWrapper(0)(6) = "ü"
40.
    arrWrapper(0)(7) = "~"
41.
    arrWrapper(0)(8) = "’"
42.
    arrWrapper(0)(9) = "'"
43.
    arrWrapper(0)(10) = "/"
44.
    arrWrapper(0)(11) = "|"
45.
    arrWrapper(0)(12) = "&"
46.
    arrWrapper(0)(13) = "!"
47.
    arrWrapper(0)(14) = "?"
48.
    arrWrapper(0)(15) = "§"
49.
    arrWrapper(0)(16) = "$"
50.
    arrWrapper(0)(17) = "="
51.
    arrWrapper(0)(18) = "#"
52.

53.
     ' With
54.
    arrWrapper(1)(0) = "AE"
55.
    arrWrapper(1)(1) = "OE"
56.
    arrWrapper(1)(2) = "UE"
57.
    arrWrapper(1)(3) = "ss"
58.
    arrWrapper(1)(4) = "ae"
59.
    arrWrapper(1)(5) = "oe"
60.
    arrWrapper(1)(6) = "ue"
61.
    arrWrapper(1)(7) = "_"
62.
    arrWrapper(1)(8) = "_"
63.
    arrWrapper(1)(9) = "_"
64.
    arrWrapper(1)(10) = "_"
65.
    arrWrapper(1)(11) = "_"
66.
    arrWrapper(1)(12) = "_"
67.
    arrWrapper(1)(13) = "_"
68.
    arrWrapper(1)(14) = "_"
69.
    arrWrapper(1)(15) = "_"
70.
    arrWrapper(1)(16) = "_"
71.
    arrWrapper(1)(17) = "_"
72.
    arrWrapper(1)(18) = "_"
73.

74.
    For N = 0 To 18
75.
        ' 1: Start find from 1st character
76.
        ' -1: Find until string does not End
77.
        ' 0: binary comparision. Respect uppercase from lowercase.
78.
        strRemove = Replace(strRemove, arrWrapper(0)(N), arrWrapper(1)(N), 1, -1, 0)
79.
    Next
80.

81.
    normalize_str = strRemove
82.
End Function
83.

84.
Dim objFSO, objFolder, objFile, sFile, sLine
85.
Dim objADOStreamIn1, objADOStreamIn2, objADOStreamOut, objFileStream
86.
Dim newLine, byteCount, lineCount
87.
Const adTypeText = 2
88.
Const adTypeBinary = 1
89.
Const adSaveCreateOverWrite = 2
90.
Const sObj = "/CIP3AdmJobName"
91.
Const iMaxLines = 6
92.

93.

94.
Set objFSO = CreateObject("Scripting.FileSystemObject")
95.
Set objFolder = objFSO.GetFolder(sFolder)
96.

97.
For Each objFile In objFolder.Files
98.
  sFile = objFile.Name
99.
  ' Wenn Dateiendung passt
100.
  If StrComp(objFSO.GetExtensionName(sFile), sFileExt, vbTextCompare) = 0 Then
101.
    ' ermitteln, welcher Zeilenumbruch verwendet wurde
102.
    newLine = GetNewLine(objFile)
103.
    If newLine <> "" Then
104.
      ' Sonderzeichen ersetzen und umbenennen
105.
      sFile = normalize_str(sFile)
106.
      objFile.Move(objFile.ParentFolder & "\" & sFile)
107.
  
108.
      Set objADOStreamIn1 = CreateObject("ADODB.Stream") ' original Dateiinhalt
109.
      objADOStreamIn1.Type = adTypeBinary
110.
      objADOStreamIn1.Open
111.
  
112.
      Set objADOStreamIn2 = CreateObject("ADODB.Stream") ' geänderter Text
113.
      objADOStreamIn2.Type = adTypeText
114.
      objADOStreamIn2.Charset = "us-ascii"
115.
      objADOStreamIn2.Open
116.
  
117.
      Set objADOStreamOut = CreateObject("ADODB.Stream") ' Ausgabe
118.
      objADOStreamOut.Type = adTypeBinary
119.
      objADOStreamOut.Open
120.
  
121.
      ' Komplette Datei binär einlesen
122.
      objADOStreamIn1.LoadFromFile objFile.Path
123.
  
124.
      ' Dateistream öffnen
125.
      Set objFileStream = objFile.OpenAsTextStream()
126.
      byteCount = 0
127.
      lineCount = 0
128.
      Do Until objFileStream.AtEndOfStream
129.
        ' raus wenn mehr als 6 Zeilen gelesen wurden aber die Objektkennung nicht gefunden wurde
130.
        If lineCount > iMaxLines Then Exit Do
131.
        sLine = objFileStream.ReadLine
132.
        ' gelesene Bytes
133.
        byteCount = byteCount + Len(sLine) + Len(newLine)
134.
        ' gelesene Zeilen
135.
        lineCount = lineCount + 1
136.
        ' wenn Objektkennung gefunden wurde
137.
        If InStr(1, sLine, sObj, vbBinaryCompare) = 1 Then
138.
          ' Sonderzeichen entfernen und in den Stream schreiben
139.
          sLine = normalize_str(sLine)
140.
          objADOStreamIn2.WriteText "/" & Mid(sLine, 2)
141.
          objADOStreamIn2.WriteText newLine
142.
          ' Raus hier
143.
          Exit Do
144.
        End If
145.
        ' sonst Zeile in den Stream schreiben
146.
        objADOStreamIn2.WriteText sLine
147.
        objADOStreamIn2.WriteText newLine
148.
      Loop
149.
  
150.
      objFileStream.Close
151.
  
152.
      ' Position in den Originaldaten ändern (Anzahl zu überspringende Zeichen)
153.
      objADOStreamIn1.Position = byteCount
154.
  
155.
      ' Textstream zu Binärstream ändern
156.
      objADOStreamIn2.Position = 0
157.
      objADOStreamIn2.Type = adTypeBinary
158.
  
159.
      ' Ausgabestream aus geändertem Text und restlichen Binärdaten aufbauen
160.
      objADOStreamOut.Write objADOStreamIn2.Read
161.
      objADOStreamOut.Write objADOStreamIn1.Read
162.
  
163.
      ' Datei überschreiben
164.
      objADOStreamOut.SaveToFile objFile.Path, adSaveCreateOverWrite
165.
      objADOStreamOut.Close
166.
      objADOStreamIn2.Close
167.
      objADOStreamIn1.Close
168.
    End If
169.
  End If
170.
Next
Nur so als Ergänzung. Keine Ahnung ob das jemals der Fall sein könnte.

Steffen
Bitte warten ..
Mitglied: GizmotroniX
04.12.2019 um 06:36 Uhr
Super, Danke für den Nachtrag im Script. Könnte hilfreich sein wenns mal ein Update gibt wo sich viell. die Umbrüche ändern.
Bitte warten ..
Ähnliche Inhalte
Windows Server

Gruppenrichtlinienvererberung einzeln deaktivieren

gelöst Frage von xbast1xWindows Server4 Kommentare

Hallo zusammen, ich habe eine Haupt OU mit einer Sub OU. Die Sub OU bekommt die GPO von der ...

VB for Applications

Inhalt einer XML Datei Script ändern

gelöst Frage von chris27584VB for Applications4 Kommentare

Hallo zusammen, in folgendem Script <?xml version="1.0"?> -<SkClientConfig xmlns:xsi=" xmlns:xsd=" <LastServerIndex>1</LastServerIndex> <LastUser>11111</LastUser> <LastWorkplace>2358</LastWorkplace> -<SerializableFont> <FontValue>Microsoft Sans Serif; 8,25pt</FontValue> </SerializableFont> ...

Windows Server

PowerShell Inhalt einer csv Datei löschen

gelöst Frage von makaroniWindows Server4 Kommentare

Hallo zusammen, ich möchter gerne automatisiert über einen Task alle 10 Min eine CSV Datei via Powershell einlesen und ...

Schulung & Training

Ct einzeln als PDF?

gelöst Frage von honeybeeSchulung & Training2 Kommentare

Hallo, vielleicht bin ich einfach zu doof, aber gibt es die derzeit aktuelle c't nicht mehr als PDF? Ich ...

Neue Wissensbeiträge
Viren und Trojaner
Trend Micro WFBS 10 SP1 Patch 2185
Tipp von Abramelin vor 6 StundenViren und Trojaner

Hi, Hab gerade gesehen das Patch 2185 für TM WFBS 10 SP1 erschienen ist! Werde mal Morgen den Patch ...

Viren und Trojaner

Neuer Virus lässt Windows im abgesicherten Modus starten

Tipp von transocean vor 10 StundenViren und Trojaner2 Kommentare

Moin, lest selbst. Grüße Uwe

Sicherheit
Böser Bug in Domänenkennwortrichtlinie!
Information von DerWoWusste vor 15 StundenSicherheit1 Kommentar

Ich spiegele mal Borncity: In Kürze: Nutzt Ihr eine Domänen-Kennwortrichtlinie der herkömmlichen Art (keine PSO-Richtlinie)? Ja? Und plant Ihr, ...

Windows Tools
7-Zip v19.0 MSI silent uninstall
Tipp von Dirmhirn vor 1 TagWindows Tools5 Kommentare

Hi, ich versuchte grade 7-Zip v19.0 MSI silent zu deinstallieren. mit msiexec /x stürzt mir immer der Explorer ab. ...

Heiß diskutierte Inhalte
Sicherheitsgrundlagen
Sperrung der IMAP Aktivierung: GMail für Apple Mail - in einer Schul-Google-Suite
Frage von lazylandSicherheitsgrundlagen15 Kommentare

Hallo, ich würde mich sehr über Eure Einschätzung und Rat freuen: Der Administrator einer Google Suite (Schule) löscht aus ...

Windows 10
Win10 Remote Desktop User anders
Frage von ludibubiWindows 1014 Kommentare

Folgende Situation: Auf meinem Rechner (Win10) in der Firma (Domänen-Netzwerk) starte ich abends bevor ich gehe einen Newsletterversand. Damit ...

Windows 8
Snipping Tool Alternative für bzw ab Windows 8.1
gelöst Frage von schmitziWindows 814 Kommentare

Hallo, ich suche für Windows 8.1 eine Alternative für das bordeigene Snipping Tool von MS, vielleicht weiss ja jemand ...

Server-Hardware
Anschaffung neuer Server
Frage von tschip1801Server-Hardware14 Kommentare

unsere Firma bekommt einen neuen Server, ich bin schon sehr lange nicht mehr so tief im geschehen um hier ...