lololu145
Goto Top

IF befehle Servergebunden?

Hi Leute, ich versuche schon mehrere Tage herauszufinden ob man IF befehle vom Server aus ausführen lassen kann. Also das mache ich auch nur um die IF Befehle vom Sever ändern zu können. Aber ohne erfolg.

Dieser Code sollte vom Server aus ausgeführt werden.
(bzw. der Code ist im Server als "ifbefehle.txt" abgespeichert)
:1
set /p "bla=>"  
IF "%bla%"=="1" ...  
IF "%bla%"=="2" ...  
IF "%bla%"=="3" ...  
IF "%bla%"=="4" ...  
IF "%bla%"=="5" ...   
goto 1

Dafür hab ich den Code benutzt:
for /f "delims=" %%i in ("wget -O- http://...ifbefehle.txt -q") do set "bla2=%%i  
%bla2%

Aber es funktioniert nicht. Hoffentlich könnt ihr mir helfen.

Grüße

Content-Key: 225797

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

Printed on: April 24, 2024 at 20:04 o'clock

Member: colinardo
colinardo Jan 03, 2014 updated at 16:09:01 (UTC)
Goto Top
Hi,
PSEXEC ist dein Freund für solche Aufgaben (um Batchdateien remote auszuführen)

Grüße Uwe
Member: bastla
bastla Jan 03, 2014 at 18:19:35 (UTC)
Goto Top
Hallo lololu145 und willkommen im Forum!

Erkläre doch bitte etwas genauer, was Du eigentlich erreichen willst ...

Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Jan 03, 2014, updated at Jan 05, 2014 at 12:00:06 (UTC)
Goto Top
moin lololu,

Du meintest wohl eher, dass Du sowas wie eine veränderliche Setting.ini lokal da hast und vom Server die Auswahl erledigen lassen willst.
;Settings.ini
set1=tag1
set1=tag2
set3=tag3
...
Aber der Server/Batch bekommt einen Eingabe von wem?
Für was ist die Auswahl?

Wget lädt Dir zwar die Datei runter aber öffnen kann wget die datei nicht.
Wenn Dir das nicht zu Sicherheitskritisch ist, dann schreib die ini als Batch und lade sie mit wget auf den Server,
danach führt der ServerBatch diesen aus.

Gruß Phil
Member: Endoro
Endoro Jan 04, 2014 at 05:23:39 (UTC)
Goto Top
Hey,
dein Code wird nicht auf der Server ausgeführt sondern vom cmd des aufrufenden Terminal:

for /f "delims=" %%i in ('wget -O- "http://...ifbefehle.txt" -q') do %%i  

Das führt dann bei mir zu so einer Ausgabe:
>3
'IF' is not recognized as an internal or external command,
operable program or batch file.
'IF' is not recognized as an internal or external command,
operable program or batch file.
'IF' is not recognized as an internal or external command,
operable program or batch file.
'IF' is not recognized as an internal or external command,
operable program or batch file.
'IF' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the batch label specified - 1

Lokal entspricht das diesem Code:

for /f "delims=" %%a in (ifbefehle.txt) do %%~a  

Gruss.
Member: lololu145
lololu145 Jan 05, 2014 updated at 13:17:02 (UTC)
Goto Top
Hallo nochmals,

@colinardo @bastla @pieh-ejdsch @Endoro
Danke für die schnellen Antworten. ^^

Ich will vom Server aus die IF befehle in der Batch ausführen lassen. Also auf meinem Server liegt die "ifbefehle.txt" da befinden sich die IF befehle. Und ich möchte das ja auch nur weil ich dann, die IF befehle jederzeit von meinem FTP Server ändern kann. Die "ifbefehle.txt" soll nicht heruntergeladen werden. Das sieht man ja auch daran das ich bei wget "-O-" gemacht hab. Alles sollte eig. in der Batch geschehen. Und ich denke es funktioniert nicht weil, sich Leerzeilen da befinden. IF befehle funktionieren ja auch nicht mit Anführungsstriche:
Bsp:
"IF "%bla%"=="1" ...  
IF "%bla%"=="2" ...  
IF "%bla%"=="3" ...  
IF "%bla%"=="4" ...  
IF "%bla%"=="5" ... "  

Grüße
Member: Endoro
Endoro Jan 05, 2014 at 13:49:25 (UTC)
Goto Top
Hey,
öhm ... wie oben schon gesagt, nicht wahr? wget lädt immer was runter, wenn was da ist und es nicht verboten wurde. Mit der Option -O- wird nur erreicht, dass es nicht abgespeichert sondern auf STDOUT ausgegeben wird. Dort landet es in der Forschleife und richtet das von mir gepostete Unheil an face-smile Gruss.
Member: pieh-ejdsch
pieh-ejdsch Jan 05, 2014 updated at 14:33:58 (UTC)
Goto Top
moin,

Die Laufvariable kann so nicht aufgelöst werden, der Interpreter kommt mit den Befehlen so nicht zurecht.

set /p "bla=>"
nur ziemlich dumm, wenn keiner eine Ahnung hat was beim Blinkenden Cursor nach einem größer als zu machen ist.
Die Sprungmarke ist auch etwas gewagt:
@echo off
prompt $g$s
pushD %0\..
for /f delims^= %%i in ('wget -O- "http://...ifbefehle.txt" -q') do (  
  echo %%i
  call :Anweisung %%i
)
echo Ende
pause
popD
exit /b

:Anweisung
if %1==goto for /f "delims=:" %%i in ("%2") do findstr /ric:":%%i[ 	$]*" "%~f0" >nul || >&2 echo Zielmarke %2 nicht gefunden. &&exit /b 1  
if %1==call for /f "delims=:" %%i in ("%2") do if ::%%i==:%2 findstr /ric:"%2[ 	$]*" "%~f0" >nul || >&2 echo Sprungmarke %2 nicht gefunden. &&exit /b 1  
%*

Gruß Phil
Member: lololu145
lololu145 Jan 05, 2014 at 16:49:45 (UTC)
Goto Top
Hallo,

@Endoro
Ja, hast recht.. ich muss es wohl anders machen.

@pieh-ejdsch
Der Code ist gut aber, da werden halt nur die IF Befehle angezeigt und nicht in der Batch ausgeführt.
Ich versuche es mal weiter mit der "ini" Methode.

Grüße