Jump to content

SET /A - CMD nimmt folgendes entgegen (Auszug aus der Hilfe):


lefg
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo werte Gemeinde,

 

im Folgenden gibt mir einiges inmmer noch Rätsel auf zu set /a:

()	- Gruppierung
! ~	- unäre Operatoren
* / %	- arithmetische Operatoren (% bedeutet Modulo)
+ - 	- arithmetische Operatoren
<< >>	- logische Verschiebung    
&	- bitweise UND    
^	- bitweise exklusives ODER    
|	- bitweise ODER
= *=	- Zuordnung
/= %= += -= &= ^= |= <<= >>=   

Die Anwendung von set /a mit der Klammerrechnung ist ist mir klar, auch  Addition, Subtraktion, Mulitplikation, Division und Modulo.

 

Ich rätsele aber, wie die unären oder monären Operationen anzuwenden sind, die logischen Verschiebungen, die bitweisen Vernüpfungen.

 

Weiter ist mir die Anwendung einiger Zuordnungen unklar: *= /= %/ &= ^= |= <<= >>=, einige klar -= +=

 

Ich habe gesucht, nichts für mich brauchbares gefunden im Zusammenhang mit set /a des Kommandointerpreters.

 

Kann mir bitte jemand etwas darüber mitteilen, erklären, Beispiele geben, hat jemand Quellen, Links?

 

Habt dank für Aufmerksamkeit und Rat.

 

Edgar

 

 


 

bearbeitet von lefg
Link zu diesem Kommentar

Hi,

 

set /a "<VARIABLE> <OPERATOR> <VARIABLE>"

set /a "OP1 += OP2" ist im Endeffekt das gleiche wie set /a "OP1 = OP1 + OP2"

 

Wenn ich mein gutes altes C Buch wieder finde, kann ich dir noch ein paar mehr Infos dazu geben.

Auf die schnelle habe ich jetzt nur http://de.wikipedia.org/wiki/Bitweiser_Operator gefunden.

 

Gruß Jan

bearbeitet von testperson
Link zu diesem Kommentar

Hallo Jan,

 

danke für die Antwort.

 

Beim Recherchieren habe ich natürllich auch den Beitrag in Wikipedia gefunden, leider ist dieser nicht hilfreich im Kontext mit dem set /a des Kommandointerpreters von "MSDOS", auch ein Buch über höhere Programmiersprachen wie C bring mich da nicht weiter.

 

Die Zuweisung set /a add+=1 ist mit bekannt, ebenso sub-=1, mul*=1, div/=2, es gibt da aber noch einige, deren Anwendung mir unbekannt, zu dennen ich noch nichts gefunden.

 

Die Sache fällt mir seit langer Zeit immer wieder ein, es ist aber nicht lebenswichtig.

 

Gruß

 

Edgar

bearbeitet von lefg
Link zu diesem Kommentar

Zu den boolschen (bitweisen) Verknüpfungen könnte ich zumindest soviel sagen:

UND: Das Erg. liefert nur dann eine 1, wenn beide Operanden 1 sind. Bsp.: 15 & 4 = 4 -> Binär: 1111 & 0100 = 0100

ODER: Erg. 1 wenn einer der Op. 1 ist. Bsp. 10 ^ 6 = 14 -> Binär: 1010 ^ 0110 = 1110

...

Brauchbar zum gezielten Ein- oder Ausschalten von Bits. Mit UND schalte ich alle Bits, die ich auf 0 stelle aus. Rest bleibt. Bsp. 10110110 & 11111011 = 10110010 (kann auch angewendet werden, um Netzwerkanteil einer IP-Adresse anhand Subnetzmaske zu ermitteln;). Mit ODER kann ich Bits gezielt einschalten: 10110110 ^ 01000000 = 11110110

Wenn man in der Elektrotechnik auf diese Art Zeug ansteuert, kenn ich das. Wo man das sonst brauchen könnte... k.A. ;-)))

Link zu diesem Kommentar

 Mit ODER kann ich Bits gezielt einschalten: 10110110 ^ 01000000 = 11110110

Wenn man in der Elektrotechnik auf diese Art Zeug ansteuert, kenn ich das. Wo man das sonst brauchen könnte... k.A. ;-)))

 

z.B. prinzipiell benötigt man boolsches Vergleiche um z.b. an Userkonten gezielt einzelne UserAccountControls wie trustedDelegation, smartcardrequired, accountdisabled etc. zu verändern oder auszulesen

http://www.mcseboard.de/topic/190771-accounts-mit-trusted-for-delegation-rechten-im-ad-finden/

 

ähnliches gilt für Berechtigungen im Filesystem

 

Aber Batch und Bool passen denke ich eher nicht zusammen, obwohl beide ähnlich alt sein dürften :-)

Link zu diesem Kommentar

@testperson

 

1 << 31   // 10000000000000000000000000000000 = -2147483648

Setzt das höchste/signifikanteste Bit (MSB) einer 32-bittigen Zahl auf 1 was - normalerweise - als Minus interpretiert wird.

 

 

 

(1 << 31) >> 31    // 11111111111111111111111111111111 = -1

 

Beim zurück-shiften wird von links nach rechts mit dem MSB aufgefüllt, was zu 32 Einsen und damit -1 führt.

bearbeitet von ZeroKnowledge
Link zu diesem Kommentar

In der Beschreibung von set /a wird ein Prefix 0b für binäre Zahlen erwähnt, im Gegensatz zu 0x konnte ich es bisher nicht zum Funktionieren bringen.

Numerische Werte stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für
hexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktale Zahlen. Damit
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktale
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,
da 8 und 9 keine erlaubten oktalen Ziffern sind.

 

Hat jemand eine "Ahnung" dazu?

bearbeitet von lefg
Link zu diesem Kommentar

Vielleicht war es zu Anfang mal geplant auch eine binäre Darstellung zu unterstützen, umgesetzt wurde es dann aber wohl nicht. Zumindest ist darüber in der Doku bei Microsoft selbst nichts (mehr) zu lesen.

 

 

 

Numeric values are decimal numbers unless prefixed by 0× for hexadecimal numbers or 0 for octal numbers. Therefore, 0×12 is the same as 18 is the same as 022. The octal notation can be confusing. For example, 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits.

bearbeitet von ZeroKnowledge
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...