Batch Programmierung mit Abfragen
Hallo,
ich versuche mittels WMI und Batch Die Auflösung auszulesen und jeweils eine Datei für die Höhe und die Breite mit dem jeweiligen Wert auszugeben.
Der WMI-Teil funktioniert schon und das auslesen der Daten aus den erzeugten Text-Dokumenten klappt auch.
Nun kriege ich es nicht hin (da ich eher weniger Komplexe Batch-Skripte bisher erstellt habe), dass er je nach Inhalt der Text-Dateien auch die am Ende benötigten Text-Dateien zu erstellen.
Es geht darum, dass wir 4:3 und 16:9 Monitore verwenden und im ganzen Unternehmen einheitliche Desktop-Hintergründe verteilt werden sollen. Damit jeder PC das richtige Wallpaper bekommt, soll die Verteilungsregel prüfen, ob Datei X und Datei Y vorhanden ist, wenn ja: Nimm Bild1 (das ist aber nicht relevant für das Problem)
Habe schonmal angefangen, etwas zu programmieren:
Ich vermute mal, dass ich da mit der IF Abfrage falsch gemacht habe.
Über Verbesserungsvorschläge oder andere Möglichkeiten, dies umzusetzen, wäre ich sehr erfreut
LG
JimPiet
ich versuche mittels WMI und Batch Die Auflösung auszulesen und jeweils eine Datei für die Höhe und die Breite mit dem jeweiligen Wert auszugeben.
Der WMI-Teil funktioniert schon und das auslesen der Daten aus den erzeugten Text-Dokumenten klappt auch.
Nun kriege ich es nicht hin (da ich eher weniger Komplexe Batch-Skripte bisher erstellt habe), dass er je nach Inhalt der Text-Dateien auch die am Ende benötigten Text-Dateien zu erstellen.
Es geht darum, dass wir 4:3 und 16:9 Monitore verwenden und im ganzen Unternehmen einheitliche Desktop-Hintergründe verteilt werden sollen. Damit jeder PC das richtige Wallpaper bekommt, soll die Verteilungsregel prüfen, ob Datei X und Datei Y vorhanden ist, wenn ja: Nimm Bild1 (das ist aber nicht relevant für das Problem)
Habe schonmal angefangen, etwas zu programmieren:
del c:\scripts\h.txt
del c:\scripts\w.txt
cscript c:\scripts\monitorw.vbs>c:\scripts\w.txt
cscript c:\scripts\monitorh.vbs>c:\scripts\h.txt
cd c:\scripts
IF findstr /S /M "1920" w.txt goto 1920>c:\scripts\w1920.txt
REM 1920x1200
REM 1920x1080
IF findstr /S /M "1280" w.txt goto 1280>c:\scripts\w1280.txt
REM 1280x1024
REM 1280x960
REM 1280x800
REM 1280x768
IF findstr /S /M "1680" w.txt goto 1680>c:\scripts\w1680.txt
REM 1680x1050
IF findstr /S /M "1152" w.txt goto 1152>c:\scripts\w1152.txt
REM 1152x864
REM 1152x720
IF findstr /S /M "1400" w.txt goto 1400>c:\scripts\w1400.txt
REM 1400x1050
IF findstr /S /M "1440" w.txt goto 1440>c:\scripts\w1440.txt
REM 1440x900
IF findstr /S /M "1600" w.txt goto 1600>c:\scripts\w1600.txt
REM 1600x900
IF findstr /S /M "1024" w.txt goto 1024>c:\scripts\w1024.txt
REM 1024x768
:1920
IF findstr /S /M "1200" h.txt>c:\scripts\h1200.txt
IF findstr /S /M "1080" h.txt>c:\scripts\h1080.txt
:END
:1280
IF findstr /S /M "1024" h.txt>c:\scripts\h1024.txt
IF findstr /S /M "960" h.txt>c:\scripts\h960.txt
IF findstr /S /M "800" h.txt>c:\scripts\h800.txt
IF findstr /S /M "768" h.txt>c:\scripts\h800.txt
:END
:1680
IF findstr /S /M "1050" h.txt>c:\scripts\h1050.txt
:END
:1152
IF findstr /S /M "864" h.txt>c:\scripts\h864.txt
IF findstr /S /M "720" h.txt>c:\scripts\h720.txt
:1400
IF findstr /S /M "1050" h.txt>c:\scripts\h1050.txt
:1440
IF findstr /S /M "900" h.txt>c:\scripts\h900.txt
:1600
IF findstr /S /M "900" h.txt>c:\scripts\h900.txt
:1024
IF findstr /S /M "768" h.txt>c:\scripts\h768.txt
Ich vermute mal, dass ich da mit der IF Abfrage falsch gemacht habe.
Über Verbesserungsvorschläge oder andere Möglichkeiten, dies umzusetzen, wäre ich sehr erfreut
LG
JimPiet
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190527
Url: https://administrator.de/contentid/190527
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
6 Kommentare
Neuester Kommentar
Salü,
oder gleich so:
btw:
Wenn du sowas machst:
Gruß
oder gleich so:
C:\>for %a in (1024 1400 1440 1600 1680 1920) do findstr "%a" c:\scripts\h.txt && goto %a
wobei das a) wegen dem einen % nur ne Demo für die Dosbox ist und b) derzeit ja eh nur noch eine weitere nicht schlüssige Abfrage in dem Sprungziel steckt und keine echte Aktion.btw:
Wenn du sowas machst:
cscript c:\scripts\monitorw.vbs>c:\scripts\w.txt
mit einer pipe, dann brauchst du vorher keindel c:\scripts\w.txt
Gruß
Und ich frage mich, was das Ganze soll.
Ich würde die VBS so programmieren, daß die gleich die h???? und w???? Dateien schreibt.
Dann könnte man sich 64 Zeilen Batchcode sparen. Schließlich hat man dort ja die Werte für Höhe und Breite schon.
Kurz zusammengeschustert (gibt auch nur den primären Monitor aus):
Ich würde die VBS so programmieren, daß die gleich die h???? und w???? Dateien schreibt.
Dann könnte man sich 64 Zeilen Batchcode sparen. Schließlich hat man dort ja die Werte für Höhe und Breite schon.
Kurz zusammengeschustert (gibt auch nur den primären Monitor aus):
Pfad="C:\temp\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_DesktopMonitor where DeviceID='DesktopMonitor1'", "WQL")
For Each objItem In colItems
Set ofile = fso.CreateTextFile(Pfad & "h" & objItem.ScreenHeight & ".txt", True)
ofile.WriteLine "Hier steht, was in der Datei stehen sollte."
ofile.Close
Set ofile = fso.CreateTextFile(Pfad & "w" & objItem.ScreenWidth & ".txt", True)
ofile.WriteLine "Hier steht, was in der Datei stehen sollte."
ofile.Close
Next