regedit19
Goto Top

Erklärung zu .bat set Befehlen

19Hallo,

Kann mir vielleicht jemand erkären, wie ich den Befehl "set" benutzen kann, dass ich mir einmal etwas Bildliches darunterf vorstellen kann,....
denn, wenn man die Beschreibungen liest, welches Rufueichen,oder Prozentzeichen was macht, dann kommt man schon einmal aus der Bahn, weil man sich nicht mehr auskennt.
Ich möchte wenn es irgendwie geht, und es muss gehen, sonst könnten nicht sooo viele, diese Sprache erlernen...

Ich mache schon sehr viel mit *.bat, aber an den Befehl "set" habe ich mich nochnicht herangefraut!

Ich hoffe es gibt jemanden, der es mir ansatzweise erklären kann, und mir sagen kann, wie er es selbst erlernt hat.

wäre sehr dankbar!

mfg
regedit19

Content-ID: 147366

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

90776
90776 21.07.2010 um 21:04:25 Uhr
Goto Top
Hallo

War vor einem Jahr auch soweit.

der set befehl erstellt eine temporäre Umgebungsvariable

Beispiele:

set Test=Dies_ist_ein_Test

setzt die Variable Test mit dem Inhalt Dies_ist_ein_Test

um den inhalt der Variable aufzurufen

echo %Test%

ergiebt: Dies_ist_ein_Test

es gibt noch den Befehl

set /p Test=Bitte Text angeben: 

Fragt den Benutzer nach dem Inhalt der Variable Test

set /a Zahl=1

Setzt den Inhalt der Variable Zahl mit einem numerischen Wert

set
alleine

listet alle Umgebungsvariablen auf

set Test

listet alle Umgebungsvariablen auf die mit Test beginnen

in einem Batch mit dem Befehl set wird die Variable nur solange gesetzt bis das Script beendet ist

PS.

set Test=

löscht die Variable Test bzw. setzt einen leeren inhalt.

Grüsse
Switcher
mathe172
mathe172 21.07.2010 um 21:17:24 Uhr
Goto Top
Hallo regedit19!

Mit dem Befehl "set" kannst du eine Variable definieren. Variablen können praktisch alles speichern. Wenn du z.B. Text in ihr gespeichert hast, kannst du sie in deine Befehle einbauen. Das einzige was nicht geht, ist sie direkt als Befehl zu verwenden. Wenn du sie einsetzten willst, gib einfach %Variablenname% ein.

Benutzt wird set so:
set variable=wert
Das geht auch und verhindert Leerzeichen am Ende der Variable (sie würden sonst dazukommen)
set "variable=wert"  
So kann man einer Variable einen Numerischen wert zuweisen:
set /a "variable=zahl"  
Rechnen geht z.B. so:
set /a "zahl1=5"  
set /a "zahl2=4"  
set /a "ergebnis=%zahl1%+%zahl2%"  
Das ergebnis wäre 9
Das geht auch(Der Wert wird zum Alten wert dazugerechnet(rechenoperation variabel))
set /a "zahl1=5"  
set /a "zahl2=4"  
set /a "zahl1+=%zahl2%  
Dabei hätte Zahl1 den wert 9
Es geht auch mit * und / und -
So kann der Benutzer etwas eingeben(der Befehl wartet auf das erste "Enter")
set /p Variable="Das was davor steht: "  
Und so wird die erste Zeile einer Datei eingelesen(eben bis zum ersten "Enter")
set /p Variable=<Datei

Ich hoffe es ist verständlich

Mathe172

//Edit:War wohl jemand schneller...
bastla
bastla 21.07.2010 um 21:23:03 Uhr
Goto Top
@10750
Schöne Erklärung ... face-smile

Nur
in einem Batch mit dem Befehl set wird die Variable nur solange gesetzt bis das Script beendet ist
wäre etwas zu relativieren:

Wenn davor ein "setlocal" durchgeführt wurde, werden tatsächlich alle Änderungen an einer bestehenden oder auch neu gesetzten Variablen beim nächsten "endlocal" (explizit oder automatisch am Ende des Batches) wieder "vergessen" - daher beginnen die meisten Batches (zumindest hier) mit
@echo off & setlocal
(um damit sicher zu stellen, dass keine "Variablen-Reste" zurückbleiben).

Wird der Batch (was zumindest in der Testphase dringend zu empfehlen ist) aus einer CMD-Shell gestartet und es gibt darin kein "setlocal", behalten sehr wohl die in diesem Batch geänderten oder erstellten Variablen ihren Wert, bis dieser (und damit die Variable) - wie oben beschrieben - gelöscht oder die CMD-Shell geschlossen wird.

Grüße
bastla
60730
60730 21.07.2010 um 21:24:30 Uhr
Goto Top
moin,


ganz ehrlich?

wenn du deine Batche mit den gleichen Schreibfehlern schreibst, wie deine Frage - wird das sehr sehr sehr mühsam.

Wie ich batcheln gelernt hab?

Ganz einfach...

Dosbox - bzw. Dos war ja mal das OS und winblows gabs erst später - gestartet
Jede .exe .com mit einem /? gestartet und mir angesehen, was mir das Dingens erzählt - manche schrieben mir aber auch nix zurück.
Irgendwann mal gabs dann Compuserv und da tummelten sich die anderen, die Bücher gelesen haben und hin und wieder hat man eine fremdbatch inspiziert.

Und wenn du mal meinen "Fortschritt" in diesem Forum verfolgst - früher hatte ich eine eigene Art - batche zu schreiben, mittlerweile hab ich viel von den beiden Bs aus dem B Bereich übernommen.
bastla
bastla 21.07.2010 um 21:28:25 Uhr
Goto Top
@mathe172
Auch hybsch ... face-smile
BTW: Schon mal
set /a "zahl1=5"  
set /a "zahl2=4"  
set /a ergebnis=zahl1+zahl2
versucht? face-wink

Übrigens:
Das einzige was nicht geht, ist sie direkt als Befehl zu verwenden.
set "Inhalt=dir /s /b /a-d"  
%Inhalt%
Grüße
bastla
90776
90776 21.07.2010 um 21:59:47 Uhr
Goto Top
Danke Bastla

hatte ich vollkommen vergessen

Grüsse
Switcher
regedit19
regedit19 21.07.2010 um 23:05:43 Uhr
Goto Top
Zitat von @60730:
moin,


ganz ehrlich?

wenn du deine Batche mit den gleichen Schreibfehlern schreibst, wie deine Frage - wird das sehr sehr sehr mühsam.



Ich entschuldige mich, dass ich so viele Rechtschreibfehler gemacht habe, ich wollte meine Frage(n) noch fertig schreiben, bevor mein Akku leer war, darum habe ich nicht mehr auf die Rechtschreibfehler geschaut
Aber danke für den Hinweis!

regedit19
regedit19 21.07.2010 um 23:07:07 Uhr
Goto Top
Ich danke euch Allen, für die super Beschreibungen, und die detaillierte Ausführung dieser!

Freu mich sehr, und werde mich dahinterklemmen.....

mfg
regedit19