campino1611
Goto Top

Batch befehlerklärung

Hallo liebe User von Administrator.de ich hoffe ihr könnt mir helfen!!!

Also folgendes:

Ich beschäftige mich nun schon seit ein paar Monaten mit batch und denke, dass ich in diesem Gebiet nicht der Dümmste bin.
Neulich bin ich aber mal wieder auf einen Befehl gestoßen den ich mir nicht erklären kann und auch Nichts dazu im Netz steht.

Es geht um das Doppelprozent:

Bsp.:
@echo off
set Wert1=1234
set /a Wert2=%Wert1% %%5
echo %Wert2%
pause
exit

Er gibt mir so immer die letzte Zahl aus. Was bringt einem das und was bewirkt die FÜNF hinter dem Doppelprozent

Vielen Dank im Vorraus.

Content-ID: 135933

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

iVirusYx
iVirusYx 15.02.2010 um 10:04:41 Uhr
Goto Top
Habe dies schnell gegoogled:
Using a percent sign (%) in a batch file requires that two percent signs (%%) be specified. For example, the command to display "5%" from a batch file would ...

Aber ich glaube eher du suchst dies hier:
http://support.microsoft.com/kb/75634
campino1611
campino1611 15.02.2010 um 10:15:13 Uhr
Goto Top
Danke für deine schnelle Antwort.

könntest du mir aber diese befehlszeile mal erklären???
set /a ergebnissz=(%zahl1%%%%Zahl2%)
60730
60730 15.02.2010 um 10:43:52 Uhr
Goto Top
Moin,

das ist reine Mathematik.

Set /? liefert dir den Rest.
stichwort arithmetische Operatoren

Gruß
bastla
bastla 15.02.2010 um 10:44:30 Uhr
Goto Top
Hallo campino1611 und willkommen im Forum!

% (bzw %% im Batch ) in einer "set /a" führt eine "Modulo"-Berechnung aus - wenn in Deinem Beispiel in %zahl1% die Zahl 10 und in %Zahl2% die Zahl 3 enthalten wären, würde daher der Variablen %ergebnisz% (sorry, das zweite "s" kann ich beim besten Willen nicht hinschreiben face-wink) der Wert 1 (= Rest der Division 10 /3) zugewiesen ...

Grüße
bastla

[Edit] @timobeil: Gleich beim ersten Post der Woche überholt - aber Dir lasse ich ja gerne den Vortritt ... face-smile [/Edit]
Biber
Biber 15.02.2010 um 10:45:44 Uhr
Goto Top
Moin campino1611,

Diese Zeile...
set /a ergebnissz=(%zahl1%%%%Zahl2%)
...ist vermutlich bewusst so kryptisch-unleserlich gestaltet worden, um irgendwelche Batch-Einsteiger zu beeindrucken oder abzuschrecken.

Gemeint ist eigentlich nur die Verwendung des Modulo-Operators (also Ermittlung des ganzzahligen Rests der Division Zahl1/Zahl2).
Beispiel mit Zahl1=111 und Zahl2=17 wäre ja 111/17 = 6 Rest 9. Oder verkürzt "111 modulo 17 = 9".
In Schreibweise am CMD-Prompt "Set /a 111 % 17" --> Ergebnis ist 9

>set zahl1=111
>set zahl2=17
>set /a ergebnissz=(%zahl1% % %Zahl2%)
9
## weniger kryptisch geschrieben
>set /a ergebnissz=(zahl1 % Zahl2)
9

Im Batch muss das %-Zeichen (der Modulo-Operator verdoppelt werden.

Aber %zahl1% und %zahl2% können auch als zahl1 und zahl2 ohne umschließende Prozentzeichen geschrieben werden und Leerzeichen zwischen den Variablen und dem Modulo-Operator sind durchaus erlaubt.

Grüße
Biber
campino1611
campino1611 15.02.2010 um 11:03:50 Uhr
Goto Top
Danke an alle Helfer habs jetzt verstanden.