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

Per Batch bestimmte Zeilen einer Textdatei in eine 2. Textatei kopieren

Frage Entwicklung Batch & Shell

Mitglied: Moni71

Moni71 (Level 1) - Jetzt verbinden

08.07.2010 um 15:29 Uhr, 12963 Aufrufe, 4 Kommentare

Hallo !

Ich versuche schon eine Weile aus einer Textdatei mit sehr langen Datensätzen (ca. 840 Zeichen) bestimmte Zeilen in eine zweite Datei zu kopieren.

Es sollen nur die Zeilen in die 2. Datei geschrieben werden, die an Stelle 322 den Inhalt "02", "03" oder "91" haben. Alle anderen sollen ignoriert werden.

mein Ansatz:

@echo off

for /f %%i in (eingabedatei.txt) do (

set zeile=%%i
set vergl=%zeile:~321,2%

if "%Vergl%"=="91" echo %zeile%>>ausgabedatei.txt
if "%Vergl%"=="02" echo %zeile%>>ausgabedatei.txt
if "%Vergl%"=="03" echo %zeile%>>ausgabedatei.txt
)


Das funktioniert nicht.

In der Variable "Zeile" stehen nur die ersten 18 Zeichen der Datenzeile. (Die Textdatei enthält auch Leerzeichen innerhalb der Zeilen. Kann das damit zusammenhängen?)

In der Variable "Vergl" steht "~321,2" drin, statt der Inhalt. Das kann aber nichts mit der Textlänge zu tun haben. Zum Test habe ich es mit Postition 8 im Text versucht: Das selbe Problem.

Kann mir hier jemand weiterhelfen???? Ich habe schon die verschiedensten Foren erfolflos durchsucht.
Mitglied: Biber
08.07.2010 um 15:56 Uhr
Moin Moni71,

Ich habe schon die verschiedensten Foren erfolflos durchsucht.
Wozu das denn? Batches dekliniert doch kein anderes Forum so durch wie wir...

Du musst nochmal kurz vor den kommenden Batches mit "SetLocal /?" am CMD-Prompt recherchieren.

Da erfährst du dann ausführlicher, dass
a) mit "SetLocal" alle im Batch verwendeten Variablen als "nur für diesen Batch sichtbar" angekündigt werden
b) mit "SetLocal EnableDelayedExpansion" eine "verzögerte Variablenauflösung" ermöglicht wird, die erlaubt, Variablen innerhalb einer CMD-Befehlszeile zu setzen und zu lesen.

Dein Schnipsel würde danach sinngemäß so aussehen:
01.
@echo off & SetLocal EnableDelayedExpansion 
02.
 
03.
for /f %%i in (eingabedatei.txt) do ( 
04.
 
05.
set "zeile=%%i" 
06.
set "vergl=%zeile:~321,2%" 
07.
 
08.
if "!Vergl!"=="91" echo %%i>>ausgabedatei.txt 
09.
if "!Vergl!"=="02" echo %%i>>ausgabedatei.txt 
10.
if "!Vergl!"=="03" echo !zeile!>>ausgabedatei.txt 
11.
)
Bei der 1.+2. "IF !vergl!" -Anweisung habe ich mal das "%%i" ECHOen lassen -> da ist keine Schreibweise mit "!" statt "%" möglich/nötig.
Bei allen statischen Variablen, die innerhalb von IF() oder FOR()-Anweisungsklammern gesetzt werden aber schon.

Grüße
Biber
Bitte warten ..
Mitglied: Moni71
08.07.2010 um 17:05 Uhr
Hallo Biber!

Danke für Deine schnelle Antwort.

Ich habe den Code extra über die Zwischenablage eingefügt, um Tippfehler auszuschließen.

Leider habe ich immer noch das Problem, dass die Datenzeile abgeschnitten wird (offensichtlich beim ersten Leerzeichen).
Die Textdatei hat Datensätze mit einer Länge von ca. 840 Zeichen an festen Positionen. Dazwischen sind immer wieder auch Leerzeichen (mehrere).

In der Variable "vergl" steht als Inhalt: ~321,2

Ich versteh das einfach nicht.
Dürfen etwa keine Leerzeichen in der Datenzeile sein? Oder gibt es eine maximal zulässige Länge des Datensatzes, die hier überschritten wird?
Bitte warten ..
Mitglied: bastla
08.07.2010 um 17:06 Uhr
Hallo Moni71!

Damit die Zeilen trotz der Leerzeichen komplett eingelesen werden, noch die Zeile 3 auf
for /f "delims=" %%i in (eingabedatei.txt) do (
ergänzen, und die Zeile 6 sollte (im Sinne der angeführten Erklärungen) eher so aussehen:
set "vergl=!zeile:~321,2!"
Grüße
bastla
Bitte warten ..
Mitglied: Moni71
08.07.2010 um 17:21 Uhr
Hallo bastla!

Danke für den Tip. Jetzt funktioniert es.

Liebe Grüße

Moni71
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ä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 Batch: Öffnen einer Textdatei nach Systemneustart (17)

Frage von sascha382 zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...