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
GELÖST

Bestimmtes Zeichen durch Seitenumbruch ersetzen per Batch

Frage Entwicklung Batch & Shell

Mitglied: MarkusLB

MarkusLB (Level 1) - Jetzt verbinden

18.03.2011 um 16:45 Uhr, 8805 Aufrufe, 9 Kommentare

Da ich hier neu bin erstmal an alle: Hallo zusammen.

Leider hat mir die bisherige Suche in diesem Forum nicht weitergeholfen, daher meine Frage:

Ich habe eine csv-Datei, in der leider alle Einträge nur per [] getrennt sind, sofern ich diese per Editor aufrufe. Dieses [] möchte ich gerne durch einen Seitenumbruch ersetzen, damit jeder Eintrag als eigene Zeile angezeigt wird.
Wie mache ich das?

Hinweis: Ich kann die Datei nicht mit Excel o.ä. aufrufen und speichern, da die Konvertierung nachts automatisch geschehen soll, damit die Datei nachts von einem anderen System weiterverarbeitet werden kann.

Aufbau der Datei:
Spalte1,Spalte2,Spalte3[]Spalte1,Spalte2,Spalte3[] usw.

Ich habe schonmal was programmiert, aber das funktioniert leider nicht, da ich den String nicht kenne.

echo Setzen der Variablen
set "filename1=Datei1.csv-*"
set "filename2=Datei1-org.csv"
set "filename3=Datei1-bearb.csv"
set "filename4=Datei1.csv"

echo Fuege Seitenumbrueche ein

setlocal enabledelayedexpansion

for /F "delims=" %%a in (%filename2%) do (
set text=%%a
set text=!text:^[]=XXX! <- was muss ich für das XXX einsetzen?
echo !text!>>%filename3%
)
Mitglied: bastla
18.03.2011 um 17:08 Uhr
Hallo MarkusLB und willkommen im Forum!

Sofern es keine heftigen Einwände gegen VBScript gibt, würde ich in diesem Fall darauf zurückgreifen (dann klappt's zB auch mit richtig großen Dateien):
01.
Ein = "Datei1-org.csv" 
02.
Aus = "Datei1.csv" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
fso.CreateTextFile(Aus).Write Replace(fso.OpenTextFile(Ein).ReadAll, "[]", vbCrLf)
Bei Bedarf lassen sich die Dateinamen auch als Parameter übergeben ...

Es werden übrigens durch dieses Script Zeilen-, nicht Seitenümbrüche eingefügt ...

Grüße
bastla
Bitte warten ..
Mitglied: jeb-the-batcher
18.03.2011 um 19:43 Uhr
Hallo MarkusLBS,

oder einfach
01.
set text=!text:^[]=^ 
02.
 
03.
!
Die Leerzeile ist wichtig (sollte auch wirklich leer sein).

Klappt aber auch nur, wenn die Zeilen nicht zu lang sind (max ~8192 Zeichen)

Gruß
jeb
Bitte warten ..
Mitglied: Itow15
14.04.2011 um 11:09 Uhr
Hallo Zusammen ;)

Ich hoffe ihr und besonders jeb-the-batcher könnt mir auch erfolgreich helfen.

Aufgabe:

Eine txt-Datei Zeilenweise einlesen und bestimmte Zeichen löschen bzw. durch ein Absatz(Enter) ersetzen.

Inhalt der neu.txt:

b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz

Das soll dann in der test.txt wie folgt aussehen:

xyz
xyz
xyz
xyz
usw.…

Quasi alles schön untereinander anstatt nebeneinander
Hier nun mein Lösungsansatz (den ich mir zusammen kopiert habe …)

01.
  
02.
@ECHO 
03.
SETLOCAL enabledelayedexpansion 
04.
 
05.
SET "quell_datei=neu.txt" 
06.
SET "ziel_datei=test.txt" 
07.
 
08.
REM Loeschen der Ausgabedatei, falls sie (noch) existiert 
09.
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL) 
10.
 
11.
REM Quell-Datei zeilenweise auslesen 
12.
REM und in Variable "zeile" schreiben 
13.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO ( 
14.
SET zeile=%%i& CALL :ersetzen !zeile!) 
15.
GOTO :weiter 
16.
:ersetzen 
17.
SET zeile=!zeile:b 28 =! 
18.
SET zeile=!zeile:b 38 =! 
19.
SET zeile=!zeile:b 48 =! 
20.
SET zeile=!zeile:^ =^ 
21.
 
22.
23.
 
24.
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben 
25.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%) 
26.
GOTO :eof 
27.
 
28.
:weiter 
29.
 
30.
pause
Das funktioniert soweit auch alles ganz gut die b 28 , b38 und b 48 werden entfernt nur wenn es daran geht das Leerzeichen durch ein Zeilenumbruch(Enter) zu ersetzen löscht er alle Leerzeichen so das alles zusammen steht

Ich hoffe ihr könnt mir helfen ich bin hier schon fast am Verzweifeln und bedanke mich bei jeden der mir weiter helfen kann

Gruss Itow
Bitte warten ..
Mitglied: jeb-the-batcher
14.04.2011 um 11:24 Uhr
Hallo Itow,

ich denke schon, dass das Problem lösbar ist, allerdings solltest du erst mal eine neue Frage daraus machen(ist ja auch eine andere Frage als vorher), sonst sehen nur die Leute den Thread die dir beim ersten mal geantwortet haben

jeb
Bitte warten ..
Mitglied: 99045
14.04.2011 um 11:25 Uhr
Hallo,

mit einer Leerzeile kannst du keinen Seitenvorschub erzeugen. Aber mach dir nichts draus, jtb hat immer solche irren Vorschläge.

Das Steuerzeichen für Seitenvorschub ist ^L (STRG-L). Ab besten änderst du deine Textdatei mit einem Editor, der dir die Eingabe von Steuerzeichen ermöglicht.
Vielleicht hat ja bastla eine bessere Lösungsmöglichkeit mit VBscript parat.


Gruß
Bitte warten ..
Mitglied: bastla
14.04.2011 um 11:31 Uhr
@99045
Wenn doch jedes "xyz" (von dem wir allerdings sehr wenig wissen, insbes, ob es selbst Leerzeichen enthält) in eine neue Zeile soll, wäre ja
for %%i in (!zeile!) do >>%ziel_datei% echo %%i
der einfachste Ansatz ...
Aus "sportlichen Gründen" verzichte ich (vorläufig ) auf VBS ...

Grüße
bastla

P.S.: @--Itow--
Willkommen im Forum! Falls der Ansatz noch nicht genügt, unterstütze ich jebs Vorschlag, einen neuen Thread zu beginnen ...
Bitte warten ..
Mitglied: jeb-the-batcher
14.04.2011 um 11:45 Uhr
Zitat von 99045:
mit einer Leerzeile kannst du keinen Seitenvorschub erzeugen. Aber mach dir nichts draus, jtb hat immer solche irren
Vorschläge.

@99045

Er hat es auch nicht mit einem Leerzeichen versucht.

01.
SET zeile=!zeile:^ =^ 
02.
 
03.
!
Ersetzt offensichtlich Leerzeichen durch Zeilenvorschübe.

jeb
Bitte warten ..
Mitglied: 99045
14.04.2011 um 11:47 Uhr
@jtb
Verschone mich bitte zukünftig mit deinen geistigen Ergüssen und verteile deine Gunst bitte an andere, ja?
Danke.
Bitte warten ..
Mitglied: Itow15
14.04.2011 um 11:51 Uhr
Vielen vielen Dank euch es funktioniert ich bin so glücklich xD

Besondere Dank geht an bastla ;)

habe einfach

IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)

mit

for %%i in (!zeile!) do >>%ziel_datei% echo %%i

ersetzt und schon funktioniert es da wäre ich nie drauf gekommen

vielen vielen dank

Gruß Itow

/edit

habe auch die

SET zeile=!zeile:^ =^

!

entfernt hat ich in der aufregung vergessen nochmal danke ;)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch for f Befehl erkennt doppelte Zeichen als eines (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batch variable DOS-Funktion von "größer" und "kleiner" Zeichen unterdrücken (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

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 ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...