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, 9127 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 ..
Ä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: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...