Zahl in eine Txt Datei schreiben - Batch

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hey Piuzdorian, der Fehler bedeutet, dass in der Variable kein Wert eingespeichert ist. Deine Methode eine Datei auzulesen funktioniert leider nicht. Wenn du set /a counter=<temp.txt mit dem folgendem Text austauscht sollte dein Programm gehen:

for /f "delims=" %%i in (DATEI_ZUM_AUSLESEN) do set "NAME_DER_VARIABLE=%%i"

DATEI_ZUM_AUSLESEN = Name der Datei, die du auslesen willst NAME_DER_VARIABLE = Name der Variable in die der Inhalt der Datei geschrieben werden soll

Ich hoffe ich konnte dir helfen ;)

IDerAndiI

Hey IDerAndiI, danke für deine schnelle antwort👌... Ich werde es gerade testen. Schade ist das das nicht so einfach geht, sondern so einen langen schwierigen befehl braucht :D danke erst mal werde mich nacher wieder melden. Bist doch der beste. Haste hilfreichste antwort

0

Och mein Gott es klappt DANKE viel mals... Bist du hacker?

0

Gerne ;) Ne, ich bin kein Hacker, ich bin 14 und schreib aus Spaß Batch Dateien. :D

Gruß IDerAndiI

0

Lieber IDerAndiI,

Ich habe jetzt das so gemacht wie du. Das funktioniert sehr gut...Danke. Nun habe ich schon weiter probiert und bin jetzt soweit, dass bei falscher eingabe zählt der counter 1 nach oben und speichert das in tmp.txt. das klappt auch. wenn der SPEICHER(tmp.txt) 5 ist, kommt er in den ABschnitt :gesperrt und dort erscheint: Ist gespert und so...

damit man ja das programm nicht beenden kann und dann ist es entsperrt, habe ich am anfang das gemacht:FETTGEDRUCKTER

also es nimmt am anfang mal zuerst die 5 im tmp.txt in die variable %counter% nacher soll es ja schauenb ob sie 5 ist, wenn ja wieder zum abschnitt gesperrt gehen. wenn nein einfach weiter zum login. aber es überspringt mir diesen befehl einfach... Warun?

@echo off

cls

for /f "delims=" %%i in (tmp.txt) do set "counter=%%i"

if "%counter%"=="5" goto gesperrt

:anmeldung

cls

set /p user=Benutzername:

set /p pass=Passwort:

if "%user%"=="root" goto check

goto false

:check

if "%pass%"=="superuser" goto start

goto false *

Endschuldigung für die vielen Fragen, bin leider eine Pfeife was Cmd angeht :D

Lg Piuzdorian

0
@verreisterNutzer

Versuch mal nicht if "%counter%"=="5" goto gesperrt sondern ohne die ", also: if %counter%==5 goto gesperrt

Lg IDerAndiI

0
Falsch: set /a counter=<temp.txt
Besser: set /p counter=<temp.txt

Unnötig: if not "%pass%" == "root" goto false
Besser:  goto false

Falsch: echo %counter%>temp.txt
Besser: echo %counter% 1>temp.txt

"exit" zwischen einem GOTO-Befehl und einer Marke ist sinnlos.

Beim ">" kann man steuern, welche Art von Ausgabe man übermitteln will. Normalerweise geht das Programm von normaler Ausgabe aus, was "1>" entspricht. Man kann auch Fehlerausgabe angeben, dann benutzt man "2>".

Weil %counter% eine Zahl ist, versucht das Programm daher einen Ausgabentypen zu übergeben (soweit ich weiß ist alles außer 1 und 2 ungültig, wodurch gar nichts übergeben wird), statt die Zahl selbst zu übergeben.

Ist "%counter%" z.B. "3", versucht CMD bei

echo 3>temp.txt

Ausgabentyp 3 in "temp.txt" zu schreiben. Da es Typ 3 nicht gibt, ist die Datei leer.

Bei "echo 1>temp.txt" würde "ECHO ist ausgeschaltet (OFF)." in die Datei geschrieben werden, da das die normale Ausgabe von "echo " ist.

Dann gibts doch noch ne leichte Möglichkeit Dateien auszulesen :) Danke @S1r1us13 , das wusste ich auch noch nicht ;)

0

Danke S1r1us13, Das Mit dem EXIT und dem goto direkt weiss ich, mache dass aber immer aus gewohnheit :D

 Besser: set /p counter=<temp.txt

das funktioniert irgendwie nicht. ist was am code falsch?

@echo off

cls

set /p counter=<tmp.txt

if "%counter%"=="5" goto gesperrt

:anmeldung

cls

set /p user=Benutzername:

set /p pass=Passwort:

if "%user%"=="root" goto check

goto false

:check

if "%pass%"=="superuser" goto start

goto false

:false

cls

set /p counter=%counter%+1

echo "%counter%">tmp.txt

if "%counter%"=="1" set /a sek=30

if "%counter%"=="2" set /a sek=60

if "%counter%"=="3" set /a sek=90

if "%counter%"=="4" set /a sek=120

if "%counter%"=="5" goto end

0
@verreisterNutzer

Bei folgenden Zeilen würde ich alle Anführungszeichen (") entfernen: 7 ; 17 ; 23 ; 33-43

Zeile 31: Man rechnet mit set /a x=y+z

Folgende Ziele (goto) fehlen: gesperrt / start / end

01: @echo off

02:

03: cls

04:

05: set /p counter=<tmp.txt

06:

07: if "%counter%"=="5" goto gesperrt

08:

09: :anmeldung

10:

11: cls

12:

13: set /p user=Benutzername:

14:

15: set /p pass=Passwort:

16:

17: if "%user%"=="root" goto check

18:

19: goto false

20:

21: :check

22:

23: if "%pass%"=="superuser" goto start

24:

25: goto false

26:

27: :false

28:

29: cls

30:

31: set /p counter=%counter%+1

32:

33: echo "%counter%">tmp.txt

34:

35: if "%counter%"=="1" set /a sek=30

36:

37: if "%counter%"=="2" set /a sek=60

38:

39: if "%counter%"=="3" set /a sek=90

40:

41: if "%counter%"=="4" set /a sek=120

42:

43: if "%counter%"=="5" goto end

Lg IDerAndiI

0
@IDerAndiI

Sry, hab vergessen zu sagen, dass die Zahlen am Anfang jeder Zeile nur eine Denkhilfe sind, also im Programmcode nicht stehen dürfen, weil sonst das Programm nicht funktioniert ;)

Lg IDerAndiI

0
@verreisterNutzer

Weil du "%counter%" mit Anführungszeichen in tmp.txt schreibst, kommt durch

set /p counter=<tmp.txt

etwas wie "1" mit Anführungszeichen raus. Der darauffolgende IF-Befehl sähe dann so aus:

if ""1""=="5" goto gesperrt

IF wird durch falsche Syntax abstürzen, da zu viele Anführungszeichen genommen wurden. Wenn du die Anführungszeichen im IF-Befehl um %counter% entfernst, dürfte es klappen:

if %counter%=="5" goto gesperrt

Das Problem ist aber, dass du dann nicht +1 rechnen kannst. Daher empfehle ich weiterhin

echo %counter% 1>tmp.txt

Um das Leerzeichen hinter %counter% wegzubekommen, könntest du ganz oben nach dem SET/P-Befehl "set /a counter=%counter%" benutzen.

Beim letzten SET-Befehl musst du übrigens weiterhin /a benutzen: "set /a counter=%counter%+1".

0

@echo off funktioniert nicht?

Ich habe ein Batch Datei und @echo off funktioniert nicht hier die Datei . Ich habe TicTacToe und das Quiz mal weg gelassen.

@echo off title Game

set /a try1=3 set /a try2=3 set /a try3=3 set /a try4=3 set /a try5=3

echo. echo. echo ------------ echo. echo Hallo hier koennen sie Spiele spielen. echo. echo ------------ timeout /t 3 >NUL goto auswahl :auswahl cls echo. echo. echo ------------ echo. echo 1.)TicTacToe echo. echo 2.)Quiz echo. echo ------------ set /p game= if %game% == 1 goto TicTacToe if %game% == 2 goto Quiz cls echo. echo. echo. echo. echo. echo. echo. echo Bitte gib eine Zahl ein die darueber steht. timeout -t 2 >NUL goto auswahl :TicTacToe title TicTacToe :main

set z1=1 set z2=2 set z3=3 set z4=4

............. Das gehört nicht dazu erst wieder das Quiz

:Quiz set /a try1=3 set /a try2=3 set /a try3=3 set /a try4=3 set /a try5=3 cls echo. echo ------------ echo. echo Quiz echo. echo ------------ timeout -t 3 >NUL set /p name=Dein Name: echo Ok %name%. Viel Glueck. timeout -t 2 >NUL goto frage1 :frage1 cls echo. echo Noch %try1% Versuch/e echo ------------ echo. echo Frage 1: Warum war der erste Mikrochip im Jahre 1969 eine Sensation? echo.

...zur Frage

Batch Datei schließt sich durch Leerzeichen?

@echo off

color a

:start

echo Was ist das Objekt?

set /p objekt=

if '%objekt%' == 'cool' goto coolness

:coolness

Echo Das Objekt ist cool!

goto start

---------------------------------------------

Wenn ich bei der Batch Datei ein Leerzeichen eingebe beendet sie sich..

Selbst wenn ich den Code:

if '%objekt%' neq '' goto start oder

if '%objekt%' == ' ' goto start einfüge klappt es nicht

Da erscheint kann syntaktisch an dieser Stelle nicht verarbeitet werden und die Datei schließt sich.

...zur Frage

Wo liegt der Fehler in der Batch datei?

Hey. Ich setzte mich gerade mit Batch Dateien auseinander bin aber noch nicht so weit. Gerade versuche ich eine Website Pinger zu bauen. Der geht aber nicht wodran liegt der Fehler? Wahrscheinlich ist es ein recht offensichtlicher Fehler den nur ich net sehe.

:START
@echo off
cls
title Website Pinger
echo.
echo Bitte trage die Website ein die du anpingen moechtest
echo.
set /p website= Bitte trage deine Website Domain/IP ein:
echo.
echo IP Adresse:
ping %website%
echo.
echo.
echo Moechten sie die angegebende Website Oeffnen? (j / n)
set /p wahl=
if '%wahl%'=='n' goto START
if '%wahl%'=='j' goto oeffnen
:oeffnen
iexplore.exe %website%

LG Ben

...zur Frage

wie kann ich diese batch datei besser bzw anderes schreiben?

@echo off

color 02 

title jump

:start

cls

echo niemals S druecken 

echo.

echo _________________________________________________

echo.

echo.

echo.

echo.

echo ________0________________________________________

echo.

choice /c:wds /m "druecke W um zu springen und D um nachforne zu gehen:"

if %errorlevel%==1 goto jump

if %errorlevel%==2 goto forward

if %errorlevel%==3 goto gameover

pause

:forward

cls

echo.

echo.

echo _________________________________________________

echo.

echo.

echo.

echo.

echo _________0_______________________________________

echo.

choice /c:wa /m "druecke W um zu springen und A um nachforne zu gehen:"

if %errorlevel%==1 goto jumpp

if %errorlevel%==2 goto start 

:jump

cls

echo.

echo.

echo _________________________________________________

echo.

echo.

echo.

echo     0

echo _________________________________________________

echo.

goto time 

:time

ping localhost >nul

goto start 

:jumpp

cls

echo.

echo.

echo _________________________________________________

echo.

echo.

echo.

echo     0

echo _________________________________________________

echo.

ping localhost >nul

goto forward

:gameover

cls

echo.

echo.

echo _________________________________________________

echo.

echo.

echo.

echo.

echo ________0________________________________________

echo.

ping localhost >nul

cls

echo niemals S druecken 

echo.

echo _________________________________________________

echo.

echo.

echo.

echo     0 

echo ________ ________________________________________

echo.

ping localhost >nul

cls

echo niemals S druecken 

echo.

echo _________________________________________________

echo.

echo.

echo.

echo.      

echo ________0________________________________________

echo.

ping localhost >nul

cls

echo niemals S druecken 

echo.

echo _________________________________________________

echo.

echo.

echo.

echo      

echo ________ ________________________________________

echo.

ping localhost >nul 

cls

echo.

echo.

echo.

echo   ~GAMEOVER!~

ping localhost >nul

ping localhost >nul 

goto entscheidung

:entscheidung

echo willst du neu starten

choice /c:yn /m "y=ja n=nein:"

if %errorlevel%==1 goto start 

if %errorlevel%==2 exit 

danke für hilfreiche antworten :)

...zur Frage

Was möchtest Du wissen?