# Einlesen einer txt Datei



## zyclop (27. Dezember 2005)

Also folgendes Problem:

Ich habe einen Batch geschrieben der mir eine IP ausgibt und diese in eine txt datei speichert.

ip.txt

nun möchte ich diese Ip durch einen Batch in eine Variebel umwandeln damit ich diese im gleichen Batch verwenden kann.


```
type ip.txt|set /p x
shutdown /m \\%x% /a
pause
exit
```

das ist mein ungültiger Vorschlag...ich brauche hilfe sonst kann ich nicht weiterarbeiten plz plz mfg zyclop


----------



## Der_Crazy (27. Dezember 2005)

Versuch einmal das:

```
for /F "tokens=1" %%a in (ip.txt) do set x=%%a
```

Jetzt hat/sollte die Variable x den Wert der in der ersten Spalte der Textdatei steht (haben)
Hoffentlich hilfts
mfg


----------



## zyclop (28. Dezember 2005)

juhui danke viel mal hat gefunzt ich hab aber immer noch ein Problem 


```
@echo off
Title 3
for /F "tokens=1" %%a in (../ip.txt) do set x=%%a
echo
cls
set /p Y=Geben sie bitte den Grund ein:
echo.
set /p Z=Geben sie bitte die Zeit von 0- 600 in Sekunden ein:
echo.
shutdown /c %Y% /t %Z% /m \\%X% /s 
exit
```

bei Variabel =Y=
Ich will nun das wenn er keinen Grund eingibt das Prog neu gestartet wird.

&

bei Variabel =X=
Ich will das wenn er weniger als null eingegeben wird den Batch neugestartet wird
und falls nix eingegeben wird der standartwer 30 angenommen wird

ich habe es versucht jedoch klappt es nicht bei mir


----------



## Der_Crazy (28. Dezember 2005)

Also bei %Y% hast doch eh schon alles odeR?
Und bei:
"bei Variabel =X=
Ich will das wenn er weniger als null eingegeben wird den Batch neugestartet wird
und falls nix eingegeben wird der standartwer 30 angenommen wird"

Meinst du da eh die Variable Z weil X ist doch schon für die IP...
Und sonst würd ich es so lösen:

```
set /p Z=Geben sie bitte die Zeit von 0- 600 in Sekunden ein:
if "%Z%"=="" goto start
if "%Z%" lss "0" set Z=30
```

habs nicht ausprobiert sollte aber funktionieren.
aber du darfst da nicht vergessen eine Sprungmarke(start) irgendwo am anfang hineinzuschreiben!

Ach ich liebe batch einfach ^^

mfg



/EDIT
sry hab das mit Y falsch gelesen:


```
if "%Y%" == "" goto start
```


----------



## zyclop (29. Dezember 2005)

Jo hat geklappt danke viel mal so siehts dann aus


```
@echo off
Title 3
:start
for /F "tokens=1" %%a in (../../ip.txt) do set x=%%a
echo
cls
set /p Y=Geben sie bitte den Grund ein:
echo.
if "%Y%" == "" goto noreason
set /p Z=Geben sie bitte die Zeit von 0- 600 in Sekunden ein:
if "%Z%"=="" goto standart
echo.
shutdown /c %Y% /t %Z% /m \\%X% /s 
exit

:noreason
ping /a /n 1 >my_ip.txt
pause
for /F "tokens=1" %%B in (my_ip.txt) do set y=%%B
echo Sie haben keinen Grund angegeben darum wird 
echo nun Ihre IP-Adresse als Grund Raporiert
echo.
set /p Z=Geben sie bitte die Zeit von 0- 600 in Sekunden ein:
if "%Z%"=="" goto standart
echo.
shutdown /c %B% /t %Z% /m \\%X% /s 
exit

:standart
set Z=30
echo Sie haben keinen Wert eingetragen aus diesem Grund wird nun der Standartwert 30 Angenommen
shutdown /c %Y% /t %Z% /m \\%X% /s
exit
```

thx a lot


----------



## zyclop (29. Dezember 2005)

ICh habe jedoch schon das nexte PRoblem dass ich nicht lösen kann

wie kann ich mich selber pingen ohne das ich die IP eingebe

```
:noreason
ping /a /n 1 >my_ip.txt
pause
for /F "tokens=1" %%B in (my_ip.txt) do set y=%%B
echo Sie haben keinen Grund angegeben darum wird 
echo nun Ihre IP-Adresse als Grund Raporiert
```


----------



## Der_Crazy (29. Dezember 2005)

Selberpingen: 

```
ping localhost
```

Aber nachdem du ihm ja die ip schicken willst reicht es dann nicht, wenn du nur deinen Computernamen sendest?
Wenn ja könntest du einfach die Umgebungsvariable %LOGONSERVER% als Grund angeben
Hilft dir das weiter?

mfg


----------

