Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Gibt es keine arrays in Batch ? anderre möglichkeit ?

Mitglied: dragonl

dragonl (Level 1) - Jetzt verbinden

22.11.2005, aktualisiert 28.11.2005, 23726 Aufrufe, 5 Kommentare

Nabend , habe mich gerade hier bei euch neu angemeldet !

Also, ich habe folgendes vor:
Ich möchte eine Bacht-Datei Proggen die den Wert in der Registry, welche den Pfad zum Hintergrundbild speichert, ändert.
Ob beim Hoch- oder Runterfahren spielt eigendlich keine Rolle ( denke ich ;) ).

Mit dem erstellen, löschen und ändern von Registrywerten habe ich mich schon auseinander gesetzt, habe das nämlich für schwieriger gehalten.
Mit einwenig googeln und ein paar Beiträgen aus diesem Forum habe ich das recht schnell hinbekommen.

Aber Probleme habe ich jetzt mit der zufälligen Auswahl des Hintergrundbildes !
Wie "speicher" ich denn den Pfad eines neuen Bildes in einem Array bzw. wie erstelle ich ein Array ?

Da ich über Arrays nix gefunden habe, habe ich jeden Pfad zum Bild in einer Variablen gespeichert (WALLPAPER[1], WALLPAPER[2], WALLPAPER[3])
Mit
<font class="code">set /a NUM=1+%WALLPAPERS%*%random%/32768</font>
erzeuge ich eine Zufallszahl zwischen 1 und %WALLPAPERS%=3
Nun wollte ich wie in gewohnterweise (PHP/Perl) mit %WALLPAPER[%NUM%]% auf den Pfad des neuen Hintergrundbildes zugreifen bzw. ihn ersteinmal mit echo ausgeben aber das funktioniert nicht. Mir war auch fast sofort klar warum nicht. Weill Batch das nun so liest:
Variable1: %WALLPAPER[%
string:NUM
Variable2:%]%
Tja, und diese beiden Variablen existieren nun mal nicht. Und so war die erhoffte Ausgabe des BildPfades nur "NUM".
Wie komme ich den jetzt an den richtigen BildPfad ?

Mit festen IFs oder SWITCHs will ich das nicht machen, denn ich möchte hinterher leicht und bequem (wie man nun mal ist) neue Bilder hinzu bzw. alte entfernen können, ohen erst ein paar IFs oder CASEs zu löschen bzw. hinzuzufügen.


Hoffe Ihr könnt mir Neuling in sachen Batch da helfen
Vieleicht gibt es ja auch einen anderren Weg ?

Schon jetzt ein Danke fürs lesen.

MFG
dragonl

Hier nach mal den Code den ich bis jetzt habe, ohne Registry:
<font class="code">
@echo off
title ADHW - Automatik Desktop Hintergrundbild Wechsler
color 74

REM -------------------------------- Einstellungen ---------------------------------

REM ---Hier werden die Hintergrundbilder definiert.
REM ---Für jedes Bild eine Variable "WALLPAPER[x]"
REM ---"WALLPAPERS" enthält die gesamtzahl der definierten Hintergrundbildern.

set WALLPAPER[1]="C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background1.jpg"
set WALLPAPER[2]="C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background2.jpg"
set WALLPAPER[3]="C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background3.jpg"
set WALLPAPERS=3

REM ----------------------------------- Programm -----------------------------------

echo.
echo ------------ ADHW - Automatik Desktop Hintergrundbild Wechsler ----------------
echo.



REM ---Definiert Variable "NUM" mit einer zufallszahl zwischen 1 und "%WALLPAPER%"
set /a NUM=1+%WALLPAPERS%*%random%/32768

set NEWWP=WALLPAPER[%NUM%]
echo NEWWP=%NEWWP%
echo.
echo -WALLPAPER[%NUM%]
echo -%WALLPAPER[NUM]%
echo -%WALLPAPER[%NUM%]%
echo -%WALLPAPER[%%NUM%%]%
echo -%%WALLPAPER[%NUM%]%%
echo -%%WALLPAPER[%%NUM%%]%%
echo -
echo -
echo -
echo -
echo -%WALLPAPER[2]%
REM ---Nur mit dem letztem echo bekomme ich bis jetzt den Pfad zum Bild,
REM ---aber hier habe ich die 2 manuel gewählt und das soll ja der zufall entscheiden.



echo.
echo ------------ ADHW - Automatik Desktop Hintergrundbild Wechsler ----------------
echo.

pause
exit
</font>
Mitglied: Biber
22.11.2005 um 20:49 Uhr
Moin dragonl,
willkommen im Forum.
Als ich angefangen habe zu lesen "Ich möchte eine Bacht-Datei Proggen die.." hatte ich den Maus-Cursor schon fast auf diesem "X".. ..
..aber Du hast Dich schnell gesteigert in der Ausdrucksweise. Ist grade ein heikles Thema hier im Forum, weil einige hier die letzten Wochen ihre Fragen so formuliert haben wie sie auch mit ihrem Bewährungshelfer sprechen.. egal - back to thread.

Arrays gibt es tatsächlich nicht im Batch - soweit die schlechte Nachricht.
Die gute Nachricht: Sind auch nicht nötig, da in der CMD-Shell Variablen in Variablennamen erlaubt sind bzw. aufgelöst werden.
Beispiel am CMD-Prompt:
>set "var1=Das ist " & set "var2=nur ein" & set "var3= Pseudoarray" 
>set var 
var1=Das ist 
var2=nur ein 
var3= Pseudoarray
Um allerdings jetzt einen Variablennamen "var1" zusammenbasteln will aus "var"+"1", ist die Syntax ein bissl strange... da ich dem CMD-Interpreter sagen muss, welche Variablen er zuerst und welche teil-aufgelösten er danach auflösen soll, haben die drei Weisen von M$ die "EnableDelayedExpansion" eingeführt. Siehe die Hilfe unter "set /?" am Prompt. Oder in den neueren Tutorials im Bereich "Batch & Shell".
Insbesondere unter "SetLocal EnableDelayedExpansion".

Kurzskizze DelayedExpansion:
CMD-Variablen werden erkannt, wenn sie eingeschlossen sind in %-Zeichen (%var%).
Eine Variable, die erst delayed aufgelöst werden soll, weil sie noch einen inneren "variablen" Teil hat,
wird in "!"-Zeichen statt in "%"-Zeichen geschrieben.
*grummel... bin kein guter Erklärer.. ich zeigs Dir:
............nacheinander den Befehl "Set var1".."Set var2".."Set var3" erzeugen: 
>for %i in (1,2,3) do @set var%i 
var1=Das ist 
var2=nur ein 
var3= Pseudoarray 
.......und so bewirke ich, das zuerst "%i" aufgelöst wird zu 1,2,3 und dann %var1%, %var2%, %var3%: 
>for %i in (1,2,3) do @echo !var%i! 
Das ist 
nur ein 
 Pseudoarray
~~~~~~~~~
(((((( Klammer auf....
Wenn es Dir lieber ist, kannst Du natürlich auch Variablen definieren, die so heißen:
Set var1[1]=test
...aber dann ist "var1[1]" ein Variablenname, kein Array-Element. ))))))))) Klammer zu
~~~~~~~~~~

Der langen Rede kurzer Sinn: Wenn Du Deine Zeilen so lässt, ware eine Lösung so:
..... 
set WALLPAPER[3]="C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background3.jpg"  
set WALLPAPERS=3  
.... 
..... 
REM ---Definiert Variable "NUM" mit einer zufallszahl zwischen 1 und "%WALLPAPER%"  
set /a NUM=1+%WALLPAPERS%*%random%/32768  
***edited Biber** set NEWWP=WALLPAPER[%NUM%]  
set NEWWP=!WALLPAPER[%NUM%]!  
::::::::::Bibertest 
echo !wallpaper[%num%]! 
:: Output: "C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background3.jpg" 
set newwp 
:: Output: NEWWP="C:\Dokumente und Einstellungen\All User\Eigene Bilder\Background3.jpg"
HTH Biber
Bitte warten ..
Mitglied: dragonl
27.11.2005 um 22:23 Uhr
Sorry dass ich mich ersts jetzt wiedermelde !

Ich danke Dir für deine Hilfe !
Ich musste zar noch ein bisschen suchen, aber ich habe es hinbekommen.

Tja, wie heist es doch so schön: "Wer lesen kann ist klar im Vorteil !"
Ich habe in der Promt des CMDs nach der verzögerten Befelserweiterung gesucht und den CMD Parameter /V gefunden.
Aber diesen anzuwenden habe ich nicht geschaft, jedenfalls nicht so wie ich das gern gehabt hätte.

Zum Glück ist Google mein Freund so bin ich dann nach etwas suchen auf
<font class="code">setlocal ENABLEDELAYEDEXPANSION</font>
gestoßen. Dabei hattest Du es schon in deiner Antwort erwänt.

Ich musste allerdings feststellen, das durch einfaches ersetzen der Pfadangabe in
[HKEY_CURRENT_USER\Control Penel\Desktop] -> Wallpaper,
das Hinterfrundbild gar nicht gewechselt wird und das nur Bitmaps verwndet werden können.
Habe dann heraus gefunden, dass eine als Bitmap konvertierte Kopie des gewälten Hintergundbildes in C:\Dokumente und Einstellungen\User\Lokale Einstellungen\Anwndungsdaten\Microsoft\Wallpaper1.bmp abgelegt wird.
Nun musste ich einen Weg fingen mein JEPG-Bild in ein Bitmap zu konvertieren.
(Das Bild von A nach B zu Kopieren wäre mit "copy" ja schnell gemacht)

Ich habe dazu erstmal ImagMagick (http://www.imagemagick.org) verwendet.
Nach der Installation steht der "convert"-befehl zur bearbeitung von Bildern bereit, frage mich aber was mit dem altem "convert" passiert ist.
Ich würde es allerdings lieber ohne irgendwelche zusatz Programme machen.
Gibt es da auch eine möglichkeit ? z.B: mit nen paar Startparametern für mspaint o.ä.?
Windows muss das ja auch irgendwie konvertiert haben.

MFG
dragonl
Bitte warten ..
Mitglied: Biber
28.11.2005 um 12:34 Uhr
Moin dragonI,
da kann ich nicht weiterhelfen. Mach dazu lieber einen neuen Thread auf - ich denke, hier findet die Frage keiner.
Schönen Tag trotzdem
Biber
Bitte warten ..
Mitglied: dragonl
28.11.2005 um 13:16 Uhr
Hi Biber,
wirst wohl Recht habe !
Ich danke noch einmal für Deine geleistete Hilfe :D

Auch Dir noch einen schönen Tag.
MFG
dragonl

(dragonL -> von ursprünglich dragonlightning )
Bitte warten ..
Mitglied: Biber
28.11.2005 um 13:27 Uhr
Aaaaaaaah soooo, von Lightning... merk ich mir für das nächste Mal

Gruß zurück
Biber (von türkisch "biber" = grüne Peperoni)
Bitte warten ..
Ähnliche Inhalte
Datenbanken

Gibt es in Access eine Möglichkeit die Anzahl der Arbeitstage auszugeben

gelöst Frage von Dr.CornwallisDatenbanken5 Kommentare

Liebe Gemeinde, gibt es in Access wie in Excel eine Funktion die die mon. Arbeitstage ausgibt(Excel - Nettoarbeitstage)? Danke ...

Server-Hardware

Welche Möglichkeiten gibt es noch, die iLO Firmware ohne HP Supportvertrag einzuspielen?

gelöst Frage von it-froschServer-Hardware6 Kommentare

Hallo Kollegen, sabines hat ja den Link heute reingestellt Kritische iLO Lücke Also patche ich mal schnell unseren betroffenen ...

Visual Studio

Verschachtelte Arrays

gelöst Frage von MarcoBornVisual Studio19 Kommentare

Hallo Forum, ich habe in VB.NET 6 Arrays, die alle dieselbe Länge, aber unterschiedliche Datentypen haben. Array1 ist vom ...

Windows Server

Arrays vergleichen mit Powershell

gelöst Frage von SlainteMhathWindows Server5 Kommentare

Moin, ich sitze hier vor einen Problem mit Powershell, das mich schier wahnsinnig macht. Hintergrund: Die auf einem Windows ...

Neue Wissensbeiträge
LAN, WAN, Wireless

UniFi - UAP Antenna Radiation Patterns - WLAN Ausstrahlungsmuster

Information von StefanKittel vor 7 StundenLAN, WAN, Wireless

Hallo, wer sich schon immer mal gefragt hat wie der Unterschied in den WLAN Access Points bei Unifi wirklich ...

Windows Userverwaltung

Passwortwechsel in der Domain bei Anmeldung erzwingen

Anleitung von Looser27 vor 17 StundenWindows Userverwaltung6 Kommentare

Nachdem es immer wieder User geschafft haben, sich während des laufenden Betriebes auszusperren, habe ich nach einer Möglichkeit gesucht, ...

Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 3 TagenAusbildung40 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 5 TagenSpeicherkarten6 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
gelöst Frage von Looser27Windows Userverwaltung32 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Microsoft
Netzlaufwerksordner Berechtigungen Speichern unter aus Programmen
gelöst Frage von ITler7Microsoft19 Kommentare

Moin, bin in ein neues Unternehmen eingetreten und habe die Anforderung bekommen Berechtigungen auf einige Ordner anzupassen, da bisher ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

Flatrates
Geschwindikeitsprobleme zwischen 1 und 1 - Vodafone Heimnetz
Frage von muenchhausenFlatrates15 Kommentare

Moin erstmal, Vorweg mein Setup 1. Wohnsitz Vodafone 400K Leitung (kommt sogar komplett an, auch um 18 Uhr) 2. ...