manuelbat
Goto Top

Batch einzelne zeilen aus einer txt.datei in jeweils verschiedene variablen schreiben

Guten Tag,
Ich sitze grad an einem Projekt von mir (Eine bat zum verschlüsseln und entschlüsseln von Buchstaben)
Mein Problem ist das ich nicht weiß wie man einzelne Zeilen aus einer txt Datei auslesen kann.
:Datei
@echo off
title Data encriptor made by MR for %name%
set Dataname=
set /p Dataname= Put the name of your locked txt here:
title Data encriptor made by MR for %name% Data: Name %Dataname%
set Zeile=
set /p Zeile= Hier Zeile eingeben:
1. %Zeile % soll aus %Dataname% ausgelesen werden.
2. dann soll das was in der Zeile steht in eine Variable gepackt werden
set InhaltZeile1=
set /p InhaltZeile1=: %Zeile1%
Da ich dazu nichts mir verständliches gefunden habe frage ich euch.
Wenn du die ganze bat sehen möchtest einfach antworten!
Danke im voraus bin noch neu.


LG von Manuel
ich hoffe auf schnelle Antwort

Content-Key: 358435

Url: https://administrator.de/contentid/358435

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: rubberman
rubberman 16.12.2017 um 16:18:39 Uhr
Goto Top
Zitat von @ManuelBat:
set /p Zeile= Hier Zeile eingeben:
Was soll denn da eingegeben werden? Die Zeilennummer? Oder was ist sonst das Suchkriterium für die korrespondierende Zeile in deiner Datei?

ich hoffe auf schnelle Antwort
Wir hoffen auf Fragen die so gestellt werden, dass sie beantwortet werden können ohne dass man vor deinem Bildschirm sitzen muss oder erahnen muss was du meinst face-wink

Steffen
Mitglied: ManuelBat
ManuelBat 17.12.2017 um 01:36:50 Uhr
Goto Top
Hallo rubbberman ,
danke für deine Antwort
set /p Zeile= Hier Zeile eingeben:
da wird die Variable %Zeile% festgelegt ,die man später auslesen möchte
Die Variable %Zeile% hat den nutzen um festzulegen welche Zeile ausgelesen werden soll.
Meine Frage war , wie ich in Batch eine bestimmte Zeile aus einer Textdatei auslesen kann, und das mehrmals.
Am ende soll z.b für das was in Zeile 1 steht eine %Variable% erstellt werden ,
die Textdatei ist z.b so aufgebaut:
x11111= Zeile 1
x22222= Zeile2
x33333 = '
x44444= '
x55555= '
LG
Manuel
Mitglied: rubberman
Lösung rubberman 17.12.2017 um 02:13:38 Uhr
Goto Top
Sorry, es bleibt völlig rätselhaft.

Versuchen wir es mal anders.
Zeilen aus einer Textdatei verarbeiten:
@echo off &setlocal
set "txtfile=test.txt"  

for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%txtfile%"') do (  
  echo Zeile %%i: %%j
)
pause
Wie du siehst kannst du mit der Zeilennummer in %%i und dem dazugehörigen Text in %%j direkt in der Schleife arbeiten. Das sollte so in 99% der Fälle reichen. Wenn es unbedingt sein muss, kannst du den Inhalt auch in ein assoziatives Array packen. Das deutet aber bereits eher auf ein Designproblem in deinem Script hin.
@echo off &setlocal
set "txtfile=test.txt"  

for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%txtfile%"') do (  
  set /a "n=%%i"  
  set "line[%%i]=%%j"  
)

echo Es wurden %n% Zeilen gelesen
echo Zeile 1 ist: %line[1]%
echo(
echo Alle gelesenen Zeilen:
setlocal EnableDelayedExpansion
for /l %%i in (1 1 %n%) do (
  echo !line[%%i]!
)
pause
Steffen
Mitglied: ManuelBat
ManuelBat 17.12.2017 um 13:52:52 Uhr
Goto Top
Hi rubbermann,
danke für deine schnelle Antwortface-smile
das hat mir sehr viel geholfen.
Da mein Code sowiso nicht schön aussieht und wahrscheinlich auch viel zu umständlich geschrieben ist, macht mir das nichts aus=)
Ich habe deinen Code ausprobiert und er funktioniert perfekt!
ich werde ihn auf meine Bedürfnisse anpassen und in meinen Code einsetzen.
Vielen Dank für deine HILFE , es hat mich sehr gefreut von dir zu hören.
LG
Manuel
PS: Ich poste den Code als Link wenn er fertig ist.
Mitglied: ManuelBat
ManuelBat 23.12.2017 um 23:34:58 Uhr
Goto Top
Hallo Steffen,
Ich hatte versprochen mich zu melden wenn ich fertig bin,
und jetzt bin ich es. Dank deiner Hilfe konnte ich meinen Code fertig stellen=)
Um Die Batch mal auszuprobieren habe ich es auf mein Google drive Konto geladen.
https://drive.google.com/open?id=1W-Gwa8U-rkVBtYKn7h1_9vmnfKdqS4m_
PS. Ich wünsche dir einen schönen 24. Dezermber
LG
Manuel