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 leerzeichen und leerzeilen aufspüren in txt Format

Mitglied: WindowsUser1984

WindowsUser1984 (Level 1) - Jetzt verbinden

21.09.2006, aktualisiert 25.10.2006, 7756 Aufrufe, 14 Kommentare

OS: Win 2000 oder/und ME
Dateien sind im normalen txt Format

Hallo erstmal

habe folgendes problem:
(angenommen _= )dann sehen die Zeilen in etwas so aus:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
(bekomms leider nicht anschaulicher hin, is nich möglich mehrere Leerzeichen aneinander zu machen)

Meistens sind die Leerzeichen in der letzten Zeile.
Für meine Anwendungen ist diese Zeile nicht verarbeitbar,
weiter ist eine leere Zeile für diese Anwendung das ende der Datei.
Zusatzinfo einige Zeilen beginnen aber mir einem leerzeichen und darauf folgt dann Text.


die Ursache habe ich auch recht schnell gefunden.
Benutze eine far.exe (FindAndRepace) um Zeichenketten in einer Datei (die leider nicht immer an der gleichen stelle stehen) zu ersetzen, diese exe macht am ende jeder Datei leider so ca 120 bis 375 leerzeichen.
(für bessere möglichkeiten als far.exe habe ich immer ein Ohr offen

Weiter habe ich durch Benutzerunachtsamkeiten auch ab und zu Zeilen in denen nichts steht(LEERZEILEN), mitten in der Datei - wie oben beschreiben endet für meine Anwendung hier die Datei und der rest wird nicht bearbeitet.


nun suche ich eine möglichkeit diese LEERZEICHEN und LEERZEILEN entweder
über eine chk.bat mit einer fehlermeldung like:"achtung Datei enthält Leerzeile(Zeile 147)"
oder einer korregierdatei mit der ich dann per Darg&Drop Dateien bereinigen kann


Nebenbei habe ich ein kleines prob mit einer BAT die mit xcopy Ordner kopieren sollte,
nach den ausführen kommt die frage ob das Ziel ein Ordner oder eine Datei ist
leider weis ich auswendig nicht welche /X befehle ich nach xcopy gesetzt habe.
werde morgen nochmal gucken falls es keinen Vorschlag gibt

Hoffe das jemand nen Lösungsvorschlag parat hat
mfg
Mitglied: bastla
21.09.2006 um 08:03 Uhr
Hallo Michael!

Für XCOPY meinst Du vermutlich den Schalter /I

Bezüglich der Korrekturdatei müsste klar gestellt werden, in welchen genau definierten Fällen welche genau definierten Korrekturen erfolgen sollen.

Zum Überprüfen folgender Entwurf:

01.
If WScript.Arguments.Count = 0 Then 
02.
	WScript.Echo "Bitte zumindest die zu prüfende Datei als Parameter übergeben!"
03.
	WScript.Quit(2)
04.
End If
05.
sDatei = WScript.Arguments(0)
06.
If WScript.Arguments.Count >1 Then
07.
	sLog = WScript.Arguments(1)
08.
Else
09.
	sLog = "C:\LogBlanks.txt" 'bitte Pfad anpassen
10.
End If
11.

12.
sLogText = ""
13.
lLineNumber = 0
14.
lErrors = 0
15.
lLastBlankLine = 0
16.

17.
Set fso = CreateObject("Scripting.FileSystemObject")
18.
If Not fso.FileExists(sDatei) Then
19.
	WScript.Echo "Datei " & sDatei & " nicht gefunden!"
20.
	WScript.Quit(2)
21.
End If
22.

23.
Set oFile = fso.OpenTextFile(sDatei, 1)
24.
Do While Not oFile.AtEndOfStream
25.
	sLine = oFile.ReadLine
26.
	lLineNumber = lLineNumber + 1
27.
	If Trim(sLine) = "" Then 'Leerzeile
28.
		sLogText = sLogText & "Zeile " & CStr(lLineNumber) & ": Leerzeile" & vbCrLF
29.
		lErrors = lErrors + 1
30.
		lLastBlankLine = lLineNumber
31.
		'Nummer der Letzten Leerzeile speichern, um zu sehen, ob der einzige
32.
		'gefundene "Fehler" die abschließende Leerzeile ist.
33.
	End If
34.
	If Right(sLine, 2) = Space(2) Then 'mindestens 2 aufeinanderfolgende Leerzeichen am Ende
35.
		sLogText = sLogText & "Zeile " & CStr(lLineNumber) & ": Leerzeichen" & vbCrLF
36.
		lErrors = lErrors + 1
37.
	End If
38.
Loop
39.
oFile.Close
40.

41.
'Wurde nur die letzte Leerzeile als "Fehler" erkannt --> keinen Fehler anzeigen
42.
If lErrors = 1 Then
43.
	If lLastBlankLine = lLineNumber Then
44.
		WScript.Echo "Keine Fehler gefunden!"
45.
		WScript.Quit(0)
46.
	End If
47.
End If
48.

49.
If lErrors > 0 Then
50.
	WScript.Echo "Es wurden " & CStr(lErrors) & " Fehler gefunden (siehe Log)!"
51.

52.
	Set oLogFile = fso.OpenTextFile(sLog, 2, True)
53.
	'8 anstelle von 2 erstellt keine neue Datei, sondern hängt an vorhandene an
54.
	oLogFile.WriteLine "Geprüfte Datei: " & sDatei
55.
	oLogFile.Write sLogText
56.
	oLogFile.Close
57.

58.
	'Logdatei anzeigen
59.
	Set oShell = WScript.CreateObject ("WScript.Shell")
60.
	oShell.Run "notepad.exe " & sLog
61.

62.
	WScript.Quit(1)
63.
End If
64.

65.
WScript.Echo "Keine Fehler gefunden, aber letzte Zeile nicht leer!"
Wenn der obige Code zB als C:\Meine Scripts\BlankCheck.vbs gespeichert wird, kann er wie folgt aufgerufen werden:

01.
CScript //nologo "C:\Meine Scripts\BlankCheck.vbs" C:\Testdatei.txt
--> "C:\Testdatei.txt" überprüfen und (bei Fehlern) Log in "C:\LogBlanks.txt" schreiben

01.
CScript //nologo "C:\Meine Scripts\BlankCheck.vbs" C:\Testdatei.txt C:\AnderesLog.txt
--> "C:\Testdatei.txt" überprüfen und (bei Fehlern) Log in "C:\AnderesLog.txt" schreiben

Da auch ein Fehlercode zurückgegeben wird (2 = keine Testdatei übergeben bzw nicht gefunden, 1 = Fehler entdeckt, 0 = OK) kann (bei Batch-Einsatz) auf die WScript.Echo-Zeilen verzichtet werden.

Soll keine spezielle Log-Datei verwendet werden, kann die Überprüfung auch interaktiv per Drag & Drop der Testdatei auf die VBS-Datei erfolgen.

<Edit> Überprüfung auf Existenz der übergebenen Testdatei hinzugefügt. </Edit>

HTH
bastla
Bitte warten ..
Mitglied: WindowsUser1984
22.09.2006 um 00:21 Uhr
supa,
dachte bis heute mittag das da nix zu machen ist und nun seh ich diese schönen Zeilen
habs gleich an ner test dat.ei ausprobiert
super !!
erstmal vielen vielen dank

Nur noch eine kleine modifikation.
Warscheinlich war meine Problembeschreibung einfach mal wieder zu uneindeutig!?
Es dürfen schon Leerzeichen darin vorkommen auch mehr als 2 hintereinander nur nicht hinter dem Text, also am ende der Zeile max 1 Leerzeichen.

Kann leider kein Beispiel einfügen bekomm das nich hin.
Mir wird immer meine Leerzeichenkette zu einem einzigen zusammengefasst *grml*
selbst mit ´´ ......

also das wenn noch machbar ist wäre SUPER, habs schon ne ganze zeit mit bat's versucht und nich hinbekommen (for überspringt leerzeilen einfach)
bin aber auch noch relatv unerfahren und mit vbs hab ich noch nie gearbeitet wobei es nich schwer aussieht ... mal schauen

mfg Mike
Bitte warten ..
Mitglied: bastla
22.09.2006 um 07:52 Uhr
Hallo Mike!

Ich habe das Script oben entsprechend modifiziert (Überprüfung auf mindestens 2 Leerzeichen am Ende der Zeile).

Für Weiteres habe ich frühestens gegen 17:00 Uhr Zeit.


HTH
bastla
Bitte warten ..
Mitglied: WindowsUser1984
22.09.2006 um 11:38 Uhr
Hallo
bin super zufrieden =D

sogar mit features:
-aufrufbefehl aus einer batch
-logdatei
-errorlevel zur weiterverarbeitung
-möglichkeit zu wählen zwischen kontinuierlichen loggen und last File log

einfach GROSSE klasse
``*beifallklatsch*

thx 4 ur time
have a nice day
Bitte warten ..
Mitglied: bastla
22.09.2006 um 17:57 Uhr
Hallo Mike!

Danke für die Blumen ...

Freut mich, wenn's passt.

Schönes Wochenende
bastla
Bitte warten ..
Mitglied: WindowsUser1984
24.10.2006 um 16:18 Uhr
Hi nochmal
habe mich nun daran gemacht eine datei zu basteln die alle leerzeilen und leerzeichen nach TEXT entfernt

das mit den leerzeilen ging noch ganz schnell da die forschleife leerzeilen einfach überspringt
nun wollte ich mit dieser schleife gleichzeitig die leerzeichen entfernen

mit For wird Zeile aus der zu prüfenden Datei ausgelesen(weis ich auswendig jetzt nimmer) > weiter mit SET NOWLINE=%%i
und call :CHKLINE

goto :eof
:CHKLINE
SET ENDLINECHK=%NOWLINE:~1%
if "%ENDLINECHK%"==" " SER NOWLINE=%NOWLINE:~0,-1%
if not "%ENDLINECHK%"==" " goto :LINEFIXED
goto CHKLINE
:LINEFIXED
echo %NOWLINE%>>%FILE2%
goto :eof

so in etwa, bin mir nichtmehr sicher
das funktioniert auch teilweise aber ab und zu wenn eine Zahl (zB 4) am ende steht
erscheint die zeile im Fenster aber nicht in der Datei
wenn echo an ist sehe ich die Zeile auch aber entdecke keinen Fehler
zB:

echo asdf asdf asdf asdf 4>>C:\AAA\BBB\CCC\DATEI.FIX

was mach ich falsch?
was kann ich ändern?

mfg Mike
Bitte warten ..
Mitglied: Biber
24.10.2006 um 16:32 Uhr
Moin WindowsUser1984,
was mach ich falsch?
Du denkst nicht daran, wie blöd es manchmal laufen kann...

was kann ich ändern?
Ändere die Zeile:
ALT: Echo %NOWLINE%>>%FILE2%
in NEU: (Echo %NOWLINE%)>>%FILE2%

Die Ziffern 0-4 haben untern dem CMD eine doppelte Bedeutung - die bezeichnen gleichzeitig die Ein/Ausgabekanäle wie
0 =STDIN=CON: Konsole (im Sinne von Tastatur),
1= STDOUT= CON:=Konsole (im Sinne von Bildschirm),
2= STDERR=Fehlerausgabe=CON=Konsole
3= STDAUX (und meistens STDDBG)
4= STDPRN = Drucker

Wenn also eine Ziffer Eins (direkt) vor dem Größerzeichen steht, heißt das:
Leite Kanal 1, also Bildschirmmeldungen, um nach ...(z.B. %FILE%).
Sprich: Alles, aber außer der Ziffer "1" selbst, wird in die Datei geleitet.

Wenn eine Ziffer Vier (direkt) vor dem Größerzeichen steht, heißt das:
Leite Kanal 4, also alles, was zum Drucker geschickt wird vom vorangegangenen Befehl, um nach ...(z.B. %FILE%).
Da aber gar nichts zum Drucker geschickt wurde, landet auch nichts in der Datei %FILE%.
Der Rest (vor der "4") dürfte zwar kurz auf dem Bildschirm auftauchen, aber das hilft Dir ja nix.

Gruß
Biber
Bitte warten ..
Mitglied: bastla
24.10.2006 um 16:50 Uhr
Hallo Mike!

Falls ich Dich richtig verstehe, willst Du aus einer Textdatei alle Leerzeilen und alle am Ende einer Zeile befindlichen Leerstellen entfernen und das Ergebnis in eine neue Datei schreiben.

Kommen in der Datei auch Zeilen mit führenden Leerstellen vor und müssen diese erhalten bleiben? Falls sie wegfallen können, müsste folgendes klappen:

CleanBlanks.vbs
01.
If WScript.Arguments.Count <> 2 Then 
02.
    WScript.Echo "Verwendung: CScript CleanBlanks.vbs Quelldatei Zieldatei"
03.
    WScript.Quit(2)
04.
End If
05.

06.
sQDatei = WScript.Arguments(0)
07.
sZDatei = WScript.Arguments(1)
08.

09.
Set fso = CreateObject("Scripting.FileSystemObject")
10.
If Not fso.FileExists(sQDatei) Then
11.
    WScript.Echo "Datei " & sQDatei & " nicht gefunden!"
12.
    WScript.Quit(2)
13.
End If
14.

15.
Set oQDatei = fso.OpenTextFile(sQDatei, 1)
16.
Set oZDatei = fso.OpenTextFile(sZDatei, 2, True) 'bereits existierende Zieldatei wird überschrieben
17.
Do While Not oQDatei.AtEndOfStream
18.
    sZeile = Trim(oQDatei.ReadLine)
19.
	If sZeile <> "" Then oZDatei.WriteLine sZeile
20.
Loop
21.
oQDatei.Close
22.
oZDatei.Close
Aufruf mit:
01.
CScript //nologo "C:\Meine Scripts\CleanBlanks.vbs" "C:\Datei mit Leerzeichen.txt" "C:\Datei ohne Leerzeichen.txt"
Grüße
bastla

@Biber
Immerhin Zweiter
Bitte warten ..
Mitglied: WindowsUser1984
24.10.2006 um 22:26 Uhr
nun gut das wusste ich nicht ich probiers dann gleich aus
thx
Bitte warten ..
Mitglied: WindowsUser1984
24.10.2006 um 22:28 Uhr
leider beginnen auch zeilen mit leerzeichen, ja
und diese müssen auch erhalten bleiben ....
trozdem danke für deine mühe
villt kann es ein anderer leser gebrauchen

thx
Bitte warten ..
Mitglied: bastla
25.10.2006 um 08:28 Uhr
Hallo Mike!

Zur Ergänzung:

Um nur die Leerzeichen am Ende zu elimieren, ändert sich im Script oben nur eine Zeile (oder, genauer gesagt, ein Buchstabe in dieser Zeile):

01.
sZeile = RTrim(oQDatei.ReadLine)
HTH
bastla
Bitte warten ..
Mitglied: WindowsUser1984
25.10.2006 um 17:11 Uhr
so nun komm ich halt nochmal angekrochen ....
immernoch die gleiche situation!

nun klappt es auch mit den zahlen am ende
aber in der
Datei ist eine schließende Klammer ) an dieser stelle bricht die for schleife ab und die restliche Datei wird nicht bearbeitet...

Bitte nochmals um Hilfe ....
Bitte warten ..
Mitglied: bastla
25.10.2006 um 17:16 Uhr
Hallo Mike!

Magst nicht doch das VBScript nehmen (jetzt mit auf das Zeilenende eingeschränkter Reinigungskraft - siehe unten)?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
25.10.2006 um 17:48 Uhr
Das ist aber auch ein Drama... *ggg

Und ich sach' noch "Du kannst gar nicht so blöd denken, wie es kommt.."

Ich geb zu - an den Fall hatte ich auch nicht gedacht.
Aber noch bin ich nicht am Ende mit meinen Alternativen.

Dann also diese zuletzt geänderte Zeile wie folgt ändern:
01.
[Von:](echo %NOWLINE%)>>%FILE2%
02.
[In: ]>>%FILE2% echo %NOWLINE%
...somit jetzt doch wieder ohne Klammern.
Die Ziffern 0....4 werden trotzdem geschrieben, falls sie am Ende der Zeile stehen.

Kleine Demo dazu:
01.
>echo %nowline%
02.
das ist jetzt nur ein Test :)
03.
#### Variable mit Klammer am Ende
04.
>echo %nowline%1
05.
das ist jetzt nur ein Test :)1
06.
#### ohne explizites Umleitungs-Größer-Zeichen klappts auch mit Ziffer "1" am Ende
07.
>echo %nowline%1>con
08.
das ist jetzt nur ein Test :)
09.
#### die "1" am Ende geht verloren bei der Umleitung mit Größerzeichen
10.
>>con echo %nowline%1
11.
das ist jetzt nur ein Test :)1
12.
#### auch die "1" am Ende wird mit umgeleitet
13.
>(echo %nowline%)
14.
")" ist syntaktisch an dieser Stelle nicht verarbeitbar.
15.
### der von WindowsUser1984 beschriebene Fehler
Grüße
Biber

P.S. Aber sicherlich "schneller" (relativ) und wesentlich pflegbarer ist bastla's VBS-Trimmer-Trümmer.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Outlook Format Kalendereinladungen
Frage von anak1mMicrosoft Office

Hallo zusammen, ich habe folgendes Problem: Wenn ich mit Outlook 2013 eine Besprechungseinladung versende, so erhalte ich in einem ...

Microsoft Office

Excel Number Format wechselt random zu Currency Format

Frage von YauhunMicrosoft Office2 Kommentare

Hallo zusammen, es geht um Office 2016 Standard auf einem Windows 7 Betriebssystem. Das Problem tritt spontan auf, vielleicht ...

Batch & Shell

Bestimmte Daten aus CSV per Windows BATCH Datei in .txt Format schreiben lassen.

gelöst Frage von freshman2017Batch & Shell9 Kommentare

Hallo Gemeinde, leider zerbreche ich mir gerade den Kopf beim Erstellen einer Batch Datei, wie ich am besten Werte ...

Outlook & Mail

Gezippte Mail msg Format

Frage von kellbiddenOutlook & Mail6 Kommentare

OS: Windows 10 Outlook 2016 Hallo zusammen Ich hab eine Frage: Ich möchte div. Mails an einen Kunden senden. ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 9 StundenWindows Mobile

Moin, MS empfiehlt als Alternative den Umstieg auf IOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

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

Information von kgborn vor 3 TagenWindows 102 Kommentare

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

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic8 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

Router & Routing
Unbekannte IPv4 Adresse im Routerprotokoll(Portweiterleitung)
gelöst Frage von tklustigRouter & Routing6 Kommentare

Hallo Leute, folgender Screenshot(ScanVersusPortForwarding.jpg) zeigt die im Routerprotokoll aufgezeigten Portweiterleitungen und alle von einem IPScanner eruierten IPv4 Adressen in ...

Monitoring
Netzwerk bzw VPN wird lahm
Frage von HenereMonitoring5 Kommentare

Servus zusammen, Netzwerk (bzw die Verbindung) sieht so aus: VM-Daten -> 1GBe -> Zyxel USG60W -> VLAN 1GBe -> ...