Inhalt einer .txt datei zur variable machen (batch)?

... komplette Frage anzeigen

3 Antworten

Zunächst einmal ist Batch für eine Passwort-Abfrage/Verwaltung eine wirklich, wirklich, wirklich schlechte Idee!!!
Das kann jeder 3.-Klässler einfach umgehen.

Aber Deine Aufgabenstellung ist eine nette Fingerübung :)

Unter Batch wird es Dir nicht gelingen eine Datei-Ausgabe in eine Umgebungsvariable umzuleiten. Das hat einfach sehr alte Gründe und könnte auch heute noch den Umgebungsspeicher überladen.

Benutze die FOR-Schleife zum Auslesen der Text-Datei.

tom2208 hat das schon im Ansatz ganz gut beschrieben.

––––––––––

Dennoch auch hierzu etwas ganz Grundlegendes:

Jeder Batch-Befehl hat eine Hilfe-Funktion:

<Befehl> /?

Zusätzlich gibt es eine Hilfe-Übersicht:

HELP

Damit werden alle Windows-eigenen Batch-Befehle aufgelistet.

Außerdem kann für die dort gelisteten Befehle auch mit folgendem Befehl ist Befehls-Hilfe aufgerufen werden:

HELP <Befehl>

Und wenn das alles immer noch nicht reicht, kann man die Hilfen auch nochmal mit der Windowshilfe über "Befehlszeile" aufrufen.

Und jetzt kommt's! Hier kannst Du Dir dir ganze Hilfe auch nochmal als Hilfe-Datei von Microsoft herunter laden:

https://www.microsoft.com/en-us/download/details.aspx?id=2632

Aber ich lehne mich mal aus dem Fenster, wenn ich behaupte, dass der erste Befehl die beste Lösung für alle Befehlszeilen-Programme ist.  ;)

Oh, warte, nicht ganz! Es gibt noch Programme, die von unixoiden Betriebssystem portiert wurden (z.B. vlc.exe oder ffmpeg.exe). Bei denen funktioniert nur dieser Befehl:

<Befehl> --help

Gelegentlich gibt es auch diese Variante:

<Befehl> -?

So, das sollte wohl reichen.

Antwort bewerten Vielen Dank für Deine Bewertung

So kannst du eine TXT einlesen: 

@echo off

FOR /F %%i in (datei.txt) do (
echo %%i
)

pause

oder eine einzelne Zeile:

@echo off

set LineNo=3

set "line="

set /a LineNo-=1

for /f %%a in ('more/e +%LineNo% ^< datei.txt') do (
  if not defined line set "line=%%a"
)

echo %line%
pause

jetzt musst du dir ein eigenes System aus denken wie man das gut umsetzen kann, das ist nicht schwer.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von tom2208
27.10.2016, 17:55

PS: Wenn es wichtig ist solltest du die Passwörter verschlüsseln, aber das ändert am auslesen nichts.

1
Kommentar von lhnihon55
27.10.2016, 23:08

Sry aber kann das nicht ganz nachvollziehen, (kann aber auch daran liegen dass ich müde bin). Könntest du mir deine Schritte noch mal erläutern?

0
Kommentar von lhnihon55
28.10.2016, 09:37

FOR /F %%i in (datei1.txt) do (
set /p %%i== Variable1
FOR /F %%t in (datei2.txt) do (
set /p %%t== Variable2

Kann man das so sagen?

0
Kommentar von MarkusGenervt
28.10.2016, 10:06

Das ist viel zu schräg und mit Umleitungen sollte man (in Batch) immer sehr, sehr sparsam umgehen!

So geht das:

@echo off
setlocal enabledelayedexpansion

for /f "usebackq delims=" %%a in ("datei.txt") do (
set line=%%a
)
echo.!line!
pause

Auf diese Weise kann u.U. immer eine neue Inhalts-Zeile an "datei.txt" angefügt werden und diese letzte Zeile wird dann ausgegeben.

"!line!" wegen "enabledelayedexpansion" und das wegen der verschachtelten SET-Anweisung. Das kennt auch nicht jeder.

Der Punkt nach ECHO dient als Failsave-String, falls "!line!" leer ist. Sonst passiert diese Ausgabe:

ECHO ist off.
Weiter mit beliebiger Taste . . .
0

Batch und Passwort System? Passt nicht wirklich bzw. ich kann mir da so jetzt nichts darunter vorstellen. Kannst Du bittte Dein Problem genauer erläutern?

Was genau soll in die Variable und wozu? Dann kann ich Dir eventuell weiterhelfen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von lhnihon55
27.10.2016, 17:55

Also der punkt ist (es ist nicht sicher, das ist mir klar), der Benutzer kann ein passwort erstellen, batch erstellt eine .txt datei in der dieses gespeichert wird. Wenn man das programm neu starten will kennt das programm die variable die beim registrieren erstellt wird nicht mehr. So jetzt möchte ich das Batch am anfang des Programms im hintergrund wenn der benutzer enter drückt die .txt datei aussliest und eine variable erstellt.

0
Kommentar von lhnihon55
27.10.2016, 17:58

wenn der benutzer dann ein passwort eingibt wird dieses mit der variable verglichen und wenn es über einstimmt kann man sich einloggen

0