Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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.

Frage Entwicklung Batch & Shell

Mitglied: viking

viking (Level 1) - Jetzt verbinden

13.07.2010, aktualisiert 15:02 Uhr, 3527 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch jede Zeile einer Textdatei prüfen (4)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...