cumulonimbus8
Fleet Admiral
- Registriert
- Apr. 2012
- Beiträge
- 18.938
Moin!
Rahmenhandlung: mit alten Skripten repariere ich Ausfälle bei normalen Ordnern und deren Desktop.Ini (dmaits mit eigenen Icons schön aussieht). Dabei soll so ein Ordner weder S noch H Attribut haben, dafür R (während die\seine Desktop.Ini mindesten S und H bedarf).
Ordner scheinen sperrig, Attribute auch. Selbst in der CMD-Box kann ich bei gesetztem S oder H nicht zusätzlich H oder S setzen bzw. S oder H löschen wenn S und H (zusammen) gesetzt sind. Also braucht es den Zweizeiler…
…der im 2. Schritt die Attribute faktisch gleichzeitig setzt. Das führt zum gewünschten Ziel.
Die Frage ist: wer sperrt da, wer funkt dazwischen?
Denn will ich das innerhalb von VBS machen, etwa so…
…dann kann ich vorher in CMD setzen oder löschen was ich will - mein Ordner hat am Schluss R, H und S gesetzt!
Auch ohne die Mathematik. mit einem Subjekt.Attributes - Attribut [also: Minus], passiert das Unvermeidliche von oben.
Geh ich in einer Serie IFs durch…
…und sammele die Werte zu einem einzigen so gelingt die gewollte Umschaltung weil es so wieder gleichzeitig passiert.
(Google und diverse Syntaxerklärungen gehen mit keinem Pieps auf dieses Phänomen ein.)
Warum ist das so?
Welche Logik verhindert es Attribute - und offenbar geht’s nur um diese Spezis hier - einzeln zu setzen, zu löschen? Mir ist diese Holzhammermethode einfach zu unsympathisch.
CN8
Rahmenhandlung: mit alten Skripten repariere ich Ausfälle bei normalen Ordnern und deren Desktop.Ini (dmaits mit eigenen Icons schön aussieht). Dabei soll so ein Ordner weder S noch H Attribut haben, dafür R (während die\seine Desktop.Ini mindesten S und H bedarf).
Ordner scheinen sperrig, Attribute auch. Selbst in der CMD-Box kann ich bei gesetztem S oder H nicht zusätzlich H oder S setzen bzw. S oder H löschen wenn S und H (zusammen) gesetzt sind. Also braucht es den Zweizeiler…
Code:
ATTRIB X:\Ordner -R -H -S
ATTRIB X:\Ordner +R +H +S
Die Frage ist: wer sperrt da, wer funkt dazwischen?
Denn will ich das innerhalb von VBS machen, etwa so…
Code:
SET Subjekt = Ordner REM Ordner ist ein FSO
CALL Attribute(-4)
CALL Attribute(-2)
CALL Attribute(1)
SUB Attribute(Attribut)
IF (Subjekt.Attributes AND ABS(Attribut)) = 0 THEN Subjekt.Attributes = Subjekt.Attributes + Attribut
END SUB
Auch ohne die Mathematik. mit einem Subjekt.Attributes - Attribut [also: Minus], passiert das Unvermeidliche von oben.
Geh ich in einer Serie IFs durch…
Code:
SET Subjekt = Ordner
CALL Attribute
SUB Attribute
DIM AttributsWert
AttributsWert = Subjekt.Attributes
IF (Subjekt.Attributes AND 4) <> 0 THEN AttributsWert = AttributsWert - 4
IF (Subjekt.Attributes AND 2) <> 0 THEN AttributsWert = AttributsWert - 2
IF (Subjekt.Attributes AND 1) = 0 THEN AttributsWert = AttributsWert - 1
Subjekt.Attributes = AttributsWert
END SUB
(Google und diverse Syntaxerklärungen gehen mit keinem Pieps auf dieses Phänomen ein.)
Warum ist das so?
Welche Logik verhindert es Attribute - und offenbar geht’s nur um diese Spezis hier - einzeln zu setzen, zu löschen? Mir ist diese Holzhammermethode einfach zu unsympathisch.
CN8