Wallpaper bei Anmeldung per GPO zufällig ändern
Hallo,
ich hoffe ich habe bei der Suche keinen passenden Beitrag übersehen, wenn doch gebt mir bitte nen Hinweis darauf ;)
Wir suchen eine Möglichkeit per GPO oder Batch (oder wie auch immer) den Clients bei jeder Anmeldung oder einmal täglich zufällig ein Hintergrundbild aus einem Ordner zuzuweisen. Wir wollen, wenn möglich, einen Ordner anlegen in dem verschiedene Hintergrundbilder liegen (und auch mal welche hinzugefügt oder gelöscht werden) und aus diesem dann zufällig eines ausgewählt und dem User zugeteilt wird - dies sollte automatisch passieren.
Nun hatte Cheffin noch ne Idee:
in einem Ordner (bsp wallpaper) liegen viele Bilder, einmal am Tag sollte zB bild1.bmp in einen anderen Ordner verschoben werden und ein anderes Bild aus Ordner "wallpaper" soll den Dateinamen bild1.bmp erhalten - so dass halt jeden Tag ein anderes Bild den Namen bild1.bmp erhält.
Kennt jemand eine Möglichkeit eine von beiden Vorschlägen zu realisieren?
Vielen Dank
MfG
ich hoffe ich habe bei der Suche keinen passenden Beitrag übersehen, wenn doch gebt mir bitte nen Hinweis darauf ;)
Wir suchen eine Möglichkeit per GPO oder Batch (oder wie auch immer) den Clients bei jeder Anmeldung oder einmal täglich zufällig ein Hintergrundbild aus einem Ordner zuzuweisen. Wir wollen, wenn möglich, einen Ordner anlegen in dem verschiedene Hintergrundbilder liegen (und auch mal welche hinzugefügt oder gelöscht werden) und aus diesem dann zufällig eines ausgewählt und dem User zugeteilt wird - dies sollte automatisch passieren.
Nun hatte Cheffin noch ne Idee:
in einem Ordner (bsp wallpaper) liegen viele Bilder, einmal am Tag sollte zB bild1.bmp in einen anderen Ordner verschoben werden und ein anderes Bild aus Ordner "wallpaper" soll den Dateinamen bild1.bmp erhalten - so dass halt jeden Tag ein anderes Bild den Namen bild1.bmp erhält.
Kennt jemand eine Möglichkeit eine von beiden Vorschlägen zu realisieren?
Vielen Dank
MfG
Please also mark the comments that contributed to the solution of the article
Content-ID: 130205
Url: https://administrator.de/contentid/130205
Printed on: December 7, 2024 at 09:12 o'clock
2 Comments
Latest comment
Moin N1ckNam3,
zumindest die Variante über Batch/Loginskript ist relativ stressarm realisierbar.
dazu wäre eigentlich nur die Funktion "Zufallszahl" etwas exotisch... aber die gibt es im CMD-Sprachumfang auch. heisst dort %random%.
Strategie wäre wie folgt (ich skizziere es nur am CMD-Prompt; bei mir mit Dateien *.txt statt *.bmp; das Prompt-Zeichen ">" nicht mit eingeben)
Schritt 1: Anzahl aller *.bmp-dateien ermitteln (bei mir *.txt) und in einer Variablen merken:
Schritt 2: Mit der ermittelten Anzahl %allfiles% eine Zufallszahl ermitteln mit 1<= Zufallszahl <= MaxAnzahl
--> der Variableninhalt von %zufall% wird berechnet als %random% modulo 129 +1 --> also etwas zwischen (0....128) +1
Schritt 3:
jetzt holen wir aus der mit DIR /b erzeugten Liste aller 129 relevanten Dateien die Zeile mit dem Wert %zufall%, hier also die 91ste Datei der Auflistung
Sieht kompliziert aus... isses aber auch
ist zu lesen von der inneren Klammer der FOR /F-Anweisung aus, diese von links nach rechts, dann wieder vorne weiterlesen, zum Schluss den DO-Anweisungsteil.
--> Innere Klammer der FOR-Anweisung von Links nach rechts:
in ('dir /b d:\temp\*.txt^|find /n ".txt"^|find "[%zufall%]"') ....
Links gehts los... ...... dir /b d:\temp\*.txt ---> eine DIR -Anlistung aller *.txt-Dateien
......... ^|find /n ".txt".............--> wird übergeben an einer FIND /N Anweisung, die jede Zeile erwischt (finde "*.txt")
^|find "[%zufall%]" ') .......--> dieses Ergebnis wird übergeben an 'finde die Zeile mit Suchstring "[91]" '
jetzt vorn weiterlesen, was mit dieser Zeile gemacht werden soll:
for /f "tokens=2 delims=]" %i in (dieserEinenZeile) ... ---------> zerbrösele die Zeile an allen Trennzeichen "]", nimm den String NACH dem ersten Trennzeichen
jetzt den Anweisungsteil nach dem DO
do @echo copy d:\temp\%i w:\hereever\wallpaper1.bmp ---> mache ein "@echo copy" von dem zerbröselten Rest = Dateiname W:\hereever\"
---> bei dir natürlich zu ersetzen durch "DeinZielordner" statt "W:\hereEver\"
Soweit die Skizze zum Experimentieren und Verfeinern.
Im Batch jeweils zwei %-Zeichen vor den dynamischen / Zählvariablen ( %i, %j --> %%i, %%j )
Grüße
Biber
zumindest die Variante über Batch/Loginskript ist relativ stressarm realisierbar.
dazu wäre eigentlich nur die Funktion "Zufallszahl" etwas exotisch... aber die gibt es im CMD-Sprachumfang auch. heisst dort %random%.
Strategie wäre wie folgt (ich skizziere es nur am CMD-Prompt; bei mir mit Dateien *.txt statt *.bmp; das Prompt-Zeichen ">" nicht mit eingeben)
Schritt 1: Anzahl aller *.bmp-dateien ermitteln (bei mir *.txt) und in einer Variablen merken:
>for %i in (d:\temp\*.txt) do @set /a "allfiles+=1">nul
### optional/POC/Testabfrage
>set allfiles
allfiles=129
>set /a "zufall=%random% % allfiles +1"
91
Schritt 3:
jetzt holen wir aus der mit DIR /b erzeugten Liste aller 129 relevanten Dateien die Zeile mit dem Wert %zufall%, hier also die 91ste Datei der Auflistung
>for /f "tokens=2 delims=]" %i in ('dir /b d:\temp\*.txt^|find /n ".txt"^|find "[%zufall%]"') do @echo copy d:\temp\%i w:\hereever\wallpaper1.bmp
copy d:\temp\ipkrams.txt w:\hereever\wallpaper1.bmp
ist zu lesen von der inneren Klammer der FOR /F-Anweisung aus, diese von links nach rechts, dann wieder vorne weiterlesen, zum Schluss den DO-Anweisungsteil.
--> Innere Klammer der FOR-Anweisung von Links nach rechts:
in ('dir /b d:\temp\*.txt^|find /n ".txt"^|find "[%zufall%]"') ....
Links gehts los... ...... dir /b d:\temp\*.txt ---> eine DIR -Anlistung aller *.txt-Dateien
......... ^|find /n ".txt".............--> wird übergeben an einer FIND /N Anweisung, die jede Zeile erwischt (finde "*.txt")
^|find "[%zufall%]" ') .......--> dieses Ergebnis wird übergeben an 'finde die Zeile mit Suchstring "[91]" '
jetzt vorn weiterlesen, was mit dieser Zeile gemacht werden soll:
for /f "tokens=2 delims=]" %i in (dieserEinenZeile) ... ---------> zerbrösele die Zeile an allen Trennzeichen "]", nimm den String NACH dem ersten Trennzeichen
jetzt den Anweisungsteil nach dem DO
do @echo copy d:\temp\%i w:\hereever\wallpaper1.bmp ---> mache ein "@echo copy" von dem zerbröselten Rest = Dateiname W:\hereever\"
---> bei dir natürlich zu ersetzen durch "DeinZielordner" statt "W:\hereEver\"
Soweit die Skizze zum Experimentieren und Verfeinern.
Im Batch jeweils zwei %-Zeichen vor den dynamischen / Zählvariablen ( %i, %j --> %%i, %%j )
Grüße
Biber