WinFuture-Forum.de: [batch] Parameterübegebende Umgebung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[batch] Parameterübegebende Umgebung


#1 _Benji_

  • Gruppe: Gäste

geschrieben 08. Juli 2008 - 12:22

Hallo zusammen,

ich führe derzeitig auf Rund 20 Servern verschiedene tätigkeiten duruch, die sich automatisieren lassen. copieren, löschen, zippen, dienste stoppen und starten.
das ganze würde ich gerne in einem batch file umsetzen, dazu muss ich aber, je nachdem auf welchem server ich gerade bin, andere tätigkeiten machen!

meine idee: paramter!

also ich rufe das script auf:
> batch.bat -a -b -c

das ganze geht natürlich nur mit einer schleife das ist mir klar. grundlegend kann ich alle anderen operationen, nur die schleife fällt mir schwer, so das alle möglichen parameter überprüft werden und entsprechend durchgeführt werden.

hätte da jemand als beispiel eine kleine schleife für mich? danke im vorraus!
0

Anzeige



#2 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 868
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 08. Juli 2008 - 12:40

Erster Treffer bei Google "batch parameter":
http://www.its05.de/computerwissen-compute...beitung_s7.html
insane in the membrane
0

#3 _Benji_

  • Gruppe: Gäste

geschrieben 08. Juli 2008 - 14:05

@echo off

if "%1"=="abc" goto abc
if "%2"=="efg" goto efg
if "%3"=="hij" goto hij

:abc
	if exist abc.zip rm -f abc.zip
	mkdir abc
	zip -r abc.zip abc

:efg
	if exist efg.zip rm -f efg.zip
	mkdir efg
	zip -r efg.zip efg

:hij
	if exist hij.zip rm -f hij.zip
	mkdir hij
	zip -r hij.zip hij

	goto end

:end


hmm das war meine erste idee ... leider klappt es so nicht ganz weil sobald test.bat aufgerufen wird, werden alle funktionen aufgerufen - nur warum?

server1 : test.bat abc hij

server2: test.bat efg abc

server3: test.bat abc efg hij

so würde ich das gerne haben wie an diesen 3 beispielen! ist sowas überhaupt noch möglich? - perl oder ähnliches kann ich auf grund der rechte nicht installieren und benutzen.
es müsste also beim batch bleiben!
0

#4 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 868
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 08. Juli 2008 - 15:03

Zitat

if "%1"=="abc" goto abc
if "%2"=="efg" goto efg
if "%3"=="hij" goto hij


%1, %2 usw sind keine Strings sondern Variablen. Darum lass die Anführungsstriche weg.

EDIT:
Dein Zweites Problem:
Was ist, wenn eine der Variablen nicht vorhanden ist. Auf der Webseite ist ein wunderbarer Beispielcode, den du quasi übernehmen kannst:

Das schreibste über deine eigenen if-Schleifen
if %1!==! goto quit
if %2!==! goto quit
if %3!==! goto quit


und ganz zum Schluss deines Scripts schreibst du:
:quit
exit

Dieser Beitrag wurde von mush bearbeitet: 08. Juli 2008 - 15:05

insane in the membrane
0

#5 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 08. Juli 2008 - 17:44

Ich habe kurz ein Skript geschrieben, dass Parameter der Form -a -b -c annehmen kann:
Beispielaufruf:
test.bat -b -a -c


Hier der Code von test.bat:
@echo off

:anfang
IF "%1"=="" GOTO ende

IF "%1"=="-a" GOTO param_a
IF "%1"=="-b" GOTO param_b
IF "%1"=="-c" GOTO param_c

:next
SHIFT
IF NOT "%1"=="" GOTO anfang

GOTO ende

:param_a
ECHO Parameter a wurde gesetzt.
GOTO next

:param_b
ECHO Parameter b wurde gesetzt.
GOTO next

:param_c
ECHO Parameter c wurde gesetzt.
GOTO next

:ende

Unter den einzelnen :param_X kannst du nun andere Variablen setzen, um die später abzufragen, ob evtl. a gesetzt wurde oder b, usw. Der Trick an dem Skript ist SHIFT, das die Parameter um eins nach links verschiebt und den unteren "wegpopt".

Ich hoffe, das hilft weiter.

Gruß,
Stefan
0

#6 _Benji_

  • Gruppe: Gäste

geschrieben 09. Juli 2008 - 07:58

hey Diewie!

danke das sieht sehr gut aus, damit kann ich arbeiten! besten dank!
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0