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

Zeichen an einer bestimmten Stelle aus einer Textdatei auslesen

Frage Entwicklung Batch & Shell

Mitglied: wemdas

wemdas (Level 1) - Jetzt verbinden

06.01.2010 um 12:11 Uhr, 8787 Aufrufe, 7 Kommentare

Hallo und Guten Tag Forums-Teinehmer,

dies ist meine erste Frage, die ich an dieses Forum stelle. Ich kam durch meine Internetrecherche auf diese Plattform, als ich nach einer Lösung zu meinem Problem gesucht habe.
Mein Problem ist anscheinend gar nicht so schwierig und auch gar nicht neu, wie es mir scheint. Ich fand einige Fragestellungen/Lösungen ähnlich meines Wunsches:

Aus einer Textdatei ohne Leerzeichen (2.txt) sollen an einer bestimmten Stelle (ab dem 33-ten Zeichen) eine bestimmte Anzahl Zeichen (z.B. 2 Zeichen) ausgelesen werden und in einer neuen Datei (2neu.txt) gespeichert werden.
Vielleicht gibt es auch eine Möglichkeit nach "(" zu suchen und dann mit +2 Zeichen zu arbeiten? Dadurch wäre dann die Länge des Verzeichnises egal. Dazu fand ich allerdings keinen Beitrag. Daher mal diese "Schmalspur"-Version von mir als Laien.

Beispiel
Inhalt von 2.txt:
c:\odr\20063063.WRI:1-1:0.9.2(080803)
c:\odr\20063064.WRI:1-1:0.9.2(090205)
c:\odr\20063065.WRI:1-1:0.9.2(100106)

Ergebnis in 2neu.txt soll lauten:
08
02
01

Hier mein bisheriger Stand (mit Hilfe dieses Forums):
@echo off &setlocal
set Quelle=2.txt
set Ziel=2neu.txt

type nul>"%Ziel%"
for /f "usebackq delims=" %%i in ("%Quelle%") do (
set "Zeile=%%i"
>>"%Ziel%" echo !Zeile:~33,2!)

Als Ergebnis bei meinen unzähligen Versuchen in der Datei 2neu.txt erhalte ich immer nur:
!Zeile:~2,4!
!Zeile:~2,4!

Kann das vielleicht daran liegen, dass ich die .bat-Datei unter Win2000 mit dem normalen Editor geschrieben habe? Ich bin ratlos. Bitte helft mir weiter.


Besten Dank schon mal im Voraus
Gruß
Wemdas
Mitglied: rubberman
06.01.2010 um 12:40 Uhr
Hallo wemdas,

der Hauptfehler ist das fehlende "enabledelayedexpansion".
01.
@echo off &setlocal enabledelayedexpansion 
02.
set Quelle=2.txt 
03.
set Ziel=2neu.txt 
04.
 
05.
type nul>"%Ziel%" 
06.
for /f "usebackq delims=" %%i in ("%Quelle%") do ( 
07.
set "Zeile=%%i" 
08.
>>"%Ziel%" echo !Zeile:~32,2!)
Grüße
rubberman
Bitte warten ..
Mitglied: wemdas
06.01.2010 um 12:47 Uhr
Hallo rubberman,

einfach genial. Ich bin sprachlos. Prima, besten Dank.
Der Name rubberman ist mir schon in mehreren Beiträgen aufgefallen. Einen Vorschlag und der passte auf anhieb.

Ich möchte nun nicht unverschämt sein, aber darf ich noch nach einer Lösung fragen, so quasi suche nach "(" und dann 2 Zeichen weiter liste mir die nächsten 2 Zeichen in die Datei neu2.txt?

Nochmals tausend Dank.
Bitte warten ..
Mitglied: rubberman
06.01.2010 um 13:37 Uhr
Hallo wemdas,

solange vor der besagten "(" nicht bereit schon eine ist, sollte es mit dieser kleinen Abwandlung gehen:

01.
@echo off &setlocal enabledelayedexpansion 
02.
set Quelle=2.txt 
03.
set Ziel=2neu.txt 
04.
 
05.
type nul>"%Ziel%" 
06.
for /f "usebackq delims=( tokens=2" %%i in ("%Quelle%") do ( 
07.
set "Zeile=%%i" 
08.
>>"%Ziel%" echo !Zeile:~2,2!)
Grüße
rubberman
Bitte warten ..
Mitglied: wemdas
06.01.2010 um 13:47 Uhr
rubberman, ich bin sprachlos.

Hat auch bei mir auf Anhieb funktioniert.
Dieser erste Kontakt hat mich sehr gefreut und hat mir auch sehr geholfen.
Danke und auch Danke an dieses Forum.
Bitte warten ..
Mitglied: potshock
06.01.2010 um 22:34 Uhr
Hallo rubberman,

ich nutze die Gelegenheit und und klinke mich hier mal ein .

Ich möchte in meiner Txt-Datei in jeder Zeile alle Zeichen nach dem 30 angezeigt bekommen.

Bisher behelfe ich mich mit einem festen Wert von dem ich annehme, er wird nicht überschritten, da es sich um Laufwerkspfade incl. Dateinamen handelt, aber wie lautet die korrekte Syntax?

>>"%Ziel%" echo !Zeile:~30,250!)


T@cky
Bitte warten ..
Mitglied: Biber
07.01.2010 um 00:43 Uhr
Moin potshock,

die korrekte Syntax wäre gemäß der CMD-Hilfe zu SET (help set -oder set /?)
Wenn die Länge nicht angegeben ist, wird der Rest des Variablenwerts verwendet.

...demnach so:
.... 
>>"%Ziel%" echo !Zeile:~30!)
..für alles ab Zeichen 31 bis zum bitteren bzw. rechten Ende.

Grüße
Biber
Bitte warten ..
Mitglied: potshock
07.01.2010 um 01:23 Uhr
Moin Bieber,

danke Dir!
Auch für die um diese Urzeit so prompte Antwort.

Ich wünsche eine gute Nacht

Potshock
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(1)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Per Batch ab einer bestimmten Stelle in einer .txt auslesen (1)

Frage von PeterPann zum Thema Batch & Shell ...

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

Frage von Manuel1234 zum Thema Batch & Shell ...

HTML
gelöst Mit HTML Datei eine Textdatei auslesen (7)

Frage von Maffi zum Thema HTML ...

Google Android
Textdatei auf SD Karte auslesen funktioniert nicht (Oneplus One) (4)

Frage von lordzwieback zum Thema Google Android ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...