Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Batch Programmierung mit Abfragen

Frage Entwicklung Batch & Shell

Mitglied: JimPiet

JimPiet (Level 1) - Jetzt verbinden

31.08.2012 um 10:30 Uhr, 3455 Aufrufe, 6 Kommentare

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:

01.
del c:\scripts\h.txt 
02.
del c:\scripts\w.txt 
03.
cscript c:\scripts\monitorw.vbs>c:\scripts\w.txt 
04.
cscript c:\scripts\monitorh.vbs>c:\scripts\h.txt 
05.
cd c:\scripts 
06.
IF findstr /S /M "1920" w.txt goto 1920>c:\scripts\w1920.txt 
07.
REM 1920x1200 
08.
REM 1920x1080 
09.
IF findstr /S /M "1280" w.txt goto 1280>c:\scripts\w1280.txt 
10.
REM 1280x1024 
11.
REM 1280x960 
12.
REM 1280x800 
13.
REM 1280x768 
14.
IF findstr /S /M "1680" w.txt goto 1680>c:\scripts\w1680.txt 
15.
REM 1680x1050 
16.
IF findstr /S /M "1152" w.txt goto 1152>c:\scripts\w1152.txt 
17.
REM 1152x864 
18.
REM 1152x720 
19.
IF findstr /S /M "1400" w.txt goto 1400>c:\scripts\w1400.txt 
20.
REM 1400x1050 
21.
IF findstr /S /M "1440" w.txt goto 1440>c:\scripts\w1440.txt 
22.
REM 1440x900 
23.
IF findstr /S /M "1600" w.txt goto 1600>c:\scripts\w1600.txt 
24.
REM 1600x900 
25.
IF findstr /S /M "1024" w.txt goto 1024>c:\scripts\w1024.txt 
26.
REM 1024x768 
27.
 
28.
 
29.
 
30.
:1920 
31.
IF findstr /S /M "1200" h.txt>c:\scripts\h1200.txt 
32.
IF findstr /S /M "1080" h.txt>c:\scripts\h1080.txt 
33.
:END 
34.
 
35.
 
36.
:1280 
37.
IF findstr /S /M "1024" h.txt>c:\scripts\h1024.txt 
38.
IF findstr /S /M "960" h.txt>c:\scripts\h960.txt 
39.
IF findstr /S /M "800" h.txt>c:\scripts\h800.txt 
40.
IF findstr /S /M "768" h.txt>c:\scripts\h800.txt 
41.
:END 
42.
 
43.
 
44.
:1680 
45.
IF findstr /S /M "1050" h.txt>c:\scripts\h1050.txt 
46.
:END 
47.
 
48.
 
49.
:1152 
50.
IF findstr /S /M "864" h.txt>c:\scripts\h864.txt 
51.
IF findstr /S /M "720" h.txt>c:\scripts\h720.txt 
52.
 
53.
 
54.
:1400 
55.
IF findstr /S /M "1050" h.txt>c:\scripts\h1050.txt 
56.
 
57.
:1440 
58.
IF findstr /S /M "900" h.txt>c:\scripts\h900.txt 
59.
 
60.
:1600 
61.
IF findstr /S /M "900" h.txt>c:\scripts\h900.txt 
62.
 
63.
:1024 
64.
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
Mitglied: SteinBeiser
31.08.2012 um 11:13 Uhr
findstr in der zeile vor dem if ohne /S /M
im if errorlevel abfragen 0 = wert gefunden 1 = nicht gefunden.
Bitte warten ..
Mitglied: bastla
31.08.2012 um 12:12 Uhr
... oder besser gleich so:
findstr "1920" w.txt && goto :1920
Grüße
bastla
Bitte warten ..
Mitglied: JimPiet
31.08.2012 um 12:19 Uhr
Vielen Dank,
habe es jetzt mit dem errorlevel gemacht und es klappt
Bitte warten ..
Mitglied: 60730
31.08.2012, aktualisiert um 13:46 Uhr
Salü,

Zitat von bastla:
... oder besser gleich so:
findstr "1920" w.txt && goto :1920 
> 

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 kein
del c:\scripts\w.txt

Gruß
Bitte warten ..
Mitglied: JimPiet
31.08.2012 um 14:50 Uhr
Ahhhhh, gut zu wissen, danke
Bitte warten ..
Mitglied: AndreasHoster
31.08.2012, aktualisiert um 15:13 Uhr
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):
01.
Pfad="C:\temp\" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
04.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_DesktopMonitor where DeviceID='DesktopMonitor1'", "WQL") 
05.
For Each objItem In colItems 
06.
         Set ofile = fso.CreateTextFile(Pfad & "h" & objItem.ScreenHeight & ".txt", True) 
07.
         ofile.WriteLine "Hier steht, was in der Datei stehen sollte." 
08.
	ofile.Close 
09.
	Set ofile = fso.CreateTextFile(Pfad & "w" & objItem.ScreenWidth & ".txt", True) 
10.
	ofile.WriteLine "Hier steht, was in der Datei stehen sollte." 
11.
	ofile.Close 
12.
Next
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...