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
Kommentar vom Moderator Biber am 13.07.2010 um 15:02:31 Uhr
Da viking es per Batch (oder evtl. VBSkript?) machen möchte -> verschoben von "Tools & Utilities" nach "Batch & Shell".

gelöst In Textdatei per batch Zeilenumbrüche bei definiertem Zeichen durchführen lassen.

Mitglied: viking

viking (Level 1) - Jetzt verbinden

13.07.2010, aktualisiert 15:02 Uhr, 3568 Aufrufe, 8 Kommentare

Hallo, hab nun schon lange gesucht, aber noch nichts passendes gefunden.

Ich möchte per batch in einem Textfile jedes mal wenn ein bestimmtes Zeichen steht, in meinem Fall ein "@", einen Zeilenumbruch im Textfile durchführen lassen.

Wie kann ich das lösen?

Meine Datei heißt "Test.txt" und liegt auf c:\Temp


Gruß viking
Mitglied: rubberman
13.07.2010 um 15:54 Uhr
Hallo viking,

mit Batch könnte das so gehen:

Test.txt
01.
Wo@sind@die@Umbrüche? 
02.
 
03.
Hier@sind@sie.
Replace.bat
01.
@echo off &setlocal 
02.
set "file=C:\Temp\Test.txt" 
03.
 
04.
set "tmpfile=%temp%\neu.tmp" 
05.
>"%tmpfile%" type nul 
06.
for /f "delims=: tokens=1*" %%a in ('findstr /n "^" "%file%"') do ( 
07.
  set "line=%%b" 
08.
  call :proc 
09.
10.
move /y "%tmpfile%" "%file%" 
11.
goto :eof 
12.
 
13.
:proc 
14.
if not defined line ( 
15.
  >>"%tmpfile%" echo. 
16.
  goto :eof 
17.
18.
set "line=%line:@=&echo.%" 
19.
>>"%tmpfile%" (echo.%line%) 
20.
goto :eof
Grüße
rubberman
Bitte warten ..
Mitglied: mathe172
13.07.2010 um 18:55 Uhr
Und wenn das nicht funtioniert, versuch mal
01.
@echo on & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%i in (test.txt) do ( 
03.
set Text=!Text!@%%i 
04.
05.
echo\"!Text!">Zwischenspeicher.txt 
06.
:weiter 
07.
for /f "tokens=1* delims=@" %%i in (Zwischenspeicher.txt) do ( 
08.
echo\%%~i>>Test2.txt 
09.
set uebrig=%%~j 
10.
if "!uebrig!"=="" goto ende 
11.
echo\!uebrig!>Zwischenspeicher.txt 
12.
13.
goto weiter 
14.
:ende
Mathe172
Bitte warten ..
Mitglied: viking
13.07.2010 um 23:30 Uhr
Hallo rubberman,
bei Deiner Version tut sich gar nichts bei mir.

Gemäß dem Beispiel oben sollte dann im neuen Textfile stehen:
Wo
sind
die
Umbrüche?

Hier
sind
sie.

Gruß Viking
Bitte warten ..
Mitglied: viking
13.07.2010 um 23:37 Uhr
Zitat von mathe172:
Und wenn das nicht funtioniert, versuch mal
01.
> @echo on & setlocal enabledelayedexpansion 
02.
> for /f "delims=" %%i in (test.txt) do ( 
03.
> set Text=!Text!@%%i 
04.
> ) 
05.
> echo\"!Text!">Zwischenspeicher.txt 
06.
> :weiter 
07.
> for /f "tokens=1* delims=@" %%i in (Zwischenspeicher.txt) do ( 
08.
> echo\%%~i>>Test2.txt 
09.
> set uebrig=%%~j 
10.
> if "!uebrig!"=="" goto ende 
11.
> echo\!uebrig!>Zwischenspeicher.txt 
12.
> ) 
13.
> goto weiter 
14.
> :ende 
15.
> 
Mathe172


Hallo Mathe172,

bei Deiner Lösung tut sich zwar was, ... er werden 2 Dateien erzeugt.
Aber der Inhalt von Test2.txt ist nur ein Teil von der Ursprungsdatei und es wird wohl nicht jedes "@" berücksichtigt.
In meiner Datei kann in einer Zeile öfter das "@" vorkommen.

Gruß viking
Bitte warten ..
Mitglied: rubberman
13.07.2010 um 23:43 Uhr
Hallo viking,

bei mir funktioniert das komischerweise problemlos. Für den Fall dass C:\Temp\Test.txt letztlich nicht der Pfad ist und irgendwo Leerzeichen enthalten sind, habe ich oben im Code mal Anführungszeichen hinzugefügt...
BTW Der Code überschreibt die ursprüngliche Datei.

Grüße
rubberman
Bitte warten ..
Mitglied: viking
14.07.2010 um 00:00 Uhr
Hallo rubberman,

habe nun eine andere Lösung im Netz gefunden.


in UltraEdit kannst du im Search and Replace Fenster unter Replace ein ^p eintragen, dann erhältst du einen Zeilenumbruch.


Danke für alle die sich einen Kopf gemacht haben.

viking
Bitte warten ..
Mitglied: rubberman
14.07.2010 um 00:44 Uhr
Da gibt's so einige Editoren, die das können. Hatte sich aber so angehört, als wolltest du das automatisieren.

Einen hab ich noch:
Speichere mal folgenden Code als Xchange.vbs
01.
Option Explicit 
02.
 
03.
' Syntax: 
04.
'  
05.
' Xchange.vbs Filename -Option1 Old -Option2 New 
06.
'  
07.
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
08.
'  
09.
' Option1/Option2 | Old/New 
10.
' ----------------|------------------------------------------------ 
11.
' -L              | any literal expression, like a word or letter 
12.
'                 | 
13.
' -C              | use VB constants: 
14.
'                 |      "Tab"  tab 
15.
'                 |      "CrLf" Windows line break 
16.
'                 |      "Cr"   carriage return 
17.
'                 |      "Lf"   line feed 
18.
'                 | 
19.
' -H              | HEX code for any character 
20.
'  
21.
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
22.
'  
23.
' Example Calls: 
24.
'  
25.
' Xchange.vbs "C:\test.txt" -l ";" -c "tab" 
26.
' will replace semicolons with tabs in C:\test.txt 
27.
'  
28.
' Xchange.vbs "C:\test.txt" -h "3F" -l "!" 
29.
' will replace Character 3F (question mark) with exclamation marks 
30.
'  
31.
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
32.
'  
33.
' Return Code (Errorlevel): 
34.
'  
35.
' 2 Syntax Error 
36.
' 1 File not found 
37.
' 0 No Error 
38.
 
39.
On Error Resume Next 
40.
Dim strFile, optF, xFind, optR, xReplace, fso, text 
41.
 
42.
If Not WScript.Arguments.Count = 5 Then WScript.Quit (2) 
43.
 
44.
strFile = WScript.Arguments(0) 
45.
optF = WScript.Arguments(1) 
46.
xFind = WScript.Arguments(2) 
47.
optR = WScript.Arguments(3) 
48.
xReplace = WScript.Arguments(4) 
49.
 
50.
Select Case UCase(optF) 
51.
  Case "-L" 
52.
  Case "-H" 
53.
    xFind = ChrW(CLng("&H" & xFind)) 
54.
  Case "-C" 
55.
    If UCase(xFind) = "TAB" Then 
56.
      xFind = vbTab 
57.
    ElseIf UCase(xFind) = "CRLF" Then 
58.
      xFind = vbCrLf 
59.
    ElseIf UCase(xFind) = "CR" Then 
60.
      xFind = vbCr 
61.
    ElseIf UCase(xFind) = "LF" Then 
62.
      xFind = vbLf 
63.
    Else 
64.
      WScript.Quit 2 
65.
    End If 
66.
  Case Else 
67.
    WScript.Quit 2 
68.
End Select 
69.
 
70.
Select Case UCase(optR) 
71.
  Case "-L" 
72.
  Case "-H" 
73.
    xReplace = ChrW(CLng("&H" & xReplace)) 
74.
  Case "-C" 
75.
    If UCase(xReplace) = "TAB" Then 
76.
      xReplace = vbTab 
77.
    ElseIf UCase(xReplace) = "CRLF" Then 
78.
      xReplace = vbCrLf 
79.
    ElseIf UCase(xReplace) = "CR" Then 
80.
      xReplace = vbCr 
81.
    ElseIf UCase(xReplace) = "LF" Then 
82.
      xReplace = vbLf 
83.
    Else 
84.
      WScript.Quit 2 
85.
    End If 
86.
  Case Else 
87.
    WScript.Quit 2 
88.
End Select 
89.
 
90.
If Not Err.Number = 0 Then WScript.Quit 2 
91.
 
92.
Set fso = CreateObject("Scripting.FileSystemObject") 
93.
text = fso.OpenTextFile(strFile, 1).ReadAll 
94.
If Not text = "" Then 
95.
  fso.CreateTextFile(strFile).Write Replace(text, xFind, xReplace) 
96.
End If 
97.
Set fso = Nothing 
98.
If Err.Number = 0 Then 
99.
  WScript.Quit 0 
100.
Else 
101.
  WScript.Quit 1 
102.
End If
Sorry für die englische Beschreibung am Anfang (ist nicht das erste Forum in dem ich den Code poste).

Nun kannst du leicht folgenden Aufruf aus einer Batchdatei machen:
01.
Xchange.vbs "C:\Temp\Test.txt" -l "@" -c "crlf"
Grüße
rubberman
Bitte warten ..
Mitglied: viking
14.07.2010 um 01:06 Uhr
Zitat von rubberman:
Da gibt's so einige Editoren, die das können. Hatte sich aber so angehört, als wolltest du das automatisieren.

Einen hab ich noch:
Speichere mal folgenden Code als Xchange.vbs
01.
> Option Explicit 
02.
>  
03.
> ' Syntax: 
04.
> '  
05.
> ' Xchange.vbs Filename -Option1 Old -Option2 New 
06.
> '  
07.
> ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
08.
> '  
09.
> ' Option1/Option2 | Old/New 
10.
> ' ----------------|------------------------------------------------ 
11.
> ' -L              | any literal expression, like a word or letter 
12.
> '                 | 
13.
> ' -C              | use VB constants: 
14.
> '                 |      "Tab"  tab 
15.
> '                 |      "CrLf" Windows line break 
16.
> '                 |      "Cr"   carriage return 
17.
> '                 |      "Lf"   line feed 
18.
> '                 | 
19.
> ' -H              | HEX code for any character 
20.
> '  
21.
> ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
22.
> '  
23.
> ' Example Calls: 
24.
> '  
25.
> ' Xchange.vbs "C:\test.txt" -l ";" -c "tab" 
26.
> ' will replace semicolons with tabs in C:\test.txt 
27.
> '  
28.
> ' Xchange.vbs "C:\test.txt" -h "3F" -l "!" 
29.
> ' will replace Character 3F (question mark) with exclamation marks 
30.
> '  
31.
> ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
32.
> '  
33.
> ' Return Code (Errorlevel): 
34.
> '  
35.
> ' 2 Syntax Error 
36.
> ' 1 File not found 
37.
> ' 0 No Error 
38.
>  
39.
> On Error Resume Next 
40.
> Dim strFile, optF, xFind, optR, xReplace, fso, text 
41.
>  
42.
> If Not WScript.Arguments.Count = 5 Then WScript.Quit (2) 
43.
>  
44.
> strFile = WScript.Arguments(0) 
45.
> optF = WScript.Arguments(1) 
46.
> xFind = WScript.Arguments(2) 
47.
> optR = WScript.Arguments(3) 
48.
> xReplace = WScript.Arguments(4) 
49.
>  
50.
> Select Case UCase(optF) 
51.
>   Case "-L" 
52.
>   Case "-H" 
53.
>     xFind = ChrW(CLng("&H" & xFind)) 
54.
>   Case "-C" 
55.
>     If UCase(xFind) = "TAB" Then 
56.
>       xFind = vbTab 
57.
>     ElseIf UCase(xFind) = "CRLF" Then 
58.
>       xFind = vbCrLf 
59.
>     ElseIf UCase(xFind) = "CR" Then 
60.
>       xFind = vbCr 
61.
>     ElseIf UCase(xFind) = "LF" Then 
62.
>       xFind = vbLf 
63.
>     Else 
64.
>       WScript.Quit 2 
65.
>     End If 
66.
>   Case Else 
67.
>     WScript.Quit 2 
68.
> End Select 
69.
>  
70.
> Select Case UCase(optR) 
71.
>   Case "-L" 
72.
>   Case "-H" 
73.
>     xReplace = ChrW(CLng("&H" & xReplace)) 
74.
>   Case "-C" 
75.
>     If UCase(xReplace) = "TAB" Then 
76.
>       xReplace = vbTab 
77.
>     ElseIf UCase(xReplace) = "CRLF" Then 
78.
>       xReplace = vbCrLf 
79.
>     ElseIf UCase(xReplace) = "CR" Then 
80.
>       xReplace = vbCr 
81.
>     ElseIf UCase(xReplace) = "LF" Then 
82.
>       xReplace = vbLf 
83.
>     Else 
84.
>       WScript.Quit 2 
85.
>     End If 
86.
>   Case Else 
87.
>     WScript.Quit 2 
88.
> End Select 
89.
>  
90.
> If Not Err.Number = 0 Then WScript.Quit 2 
91.
>  
92.
> Set fso = CreateObject("Scripting.FileSystemObject") 
93.
> text = fso.OpenTextFile(strFile, 1).ReadAll 
94.
> If Not text = "" Then 
95.
>   fso.CreateTextFile(strFile).Write Replace(text, xFind, xReplace) 
96.
> End If 
97.
> Set fso = Nothing 
98.
> If Err.Number = 0 Then 
99.
>   WScript.Quit 0 
100.
> Else 
101.
>   WScript.Quit 1 
102.
> End If 
103.
> 
Sorry für die englische Beschreibung am Anfang (ist nicht das erste Forum in dem ich den Code poste).

Nun kannst du leicht folgenden Aufruf aus einer Batchdatei machen:
01.
> Xchange.vbs "C:\Temp\Test.txt" -l "@" -c "crlf" 
02.
> 
Grüße
rubberman



Hallo rubberman,

das funktioniert nun bei mir auch.

Danke viking
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Per Batch Zeichen in Textdatei durch zeilenumbruch ersetzen

Frage von CreamyCewieBatch & Shell3 Kommentare

Hallo, ich habe folgende textdatei (test.txt) "þUEBERþNþSKZþBELþVARTþ3þaaþ5 þacþL þadþ20150385#umbr# UEBERþNþBELDATER" ich brauche nun ein Batch-Script welches mir die gesamte TXT-Datei ...

Batch & Shell

Zeilenumbruch nach 40 zeichen hinzufügen

gelöst Frage von kunzibusBatch & Shell4 Kommentare

Hallo Community, ich lese von einem Zeitterminal die Stempeldaten aus. Die Datei heißt allebuchungen.txt. Wenn ich das ganze mit ...

Batch & Shell

Per Batch erste 15 Zeichen in jeder Zeile einer Textdatei lassen. Den Rest - löschen. Wie?

gelöst Frage von takitanoBatch & Shell9 Kommentare

Hallo an alle, ich habe folgendes Problem: in einer Texdatei habe ich ca. 60.000.000 Zeilen (453 MB) Jede Zeile ...

Batch & Shell

Textdateien zusammenfügen plus durch Zeichen abtrennen

Frage von hesperBatch & Shell8 Kommentare

Morgen! Da ich kein Script-Mensch bin brauch ich mal schnelle Hilfe von euch. Ich hab mehrere Textdateien, die ich ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement17 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware12 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...