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

Fehler im Batchscript - UpdateManager

Frage Entwicklung

Mitglied: nicolasduke

nicolasduke (Level 1) - Jetzt verbinden

17.07.2008, aktualisiert 21.07.2008, 2731 Aufrufe, 6 Kommentare

Hallo Leute,

wie der Titel schon sagt, bin ich auf der Suche nach einem Tool zur Überprüfung meiner Batch Quelltexte...
Kennte jemand von euch entsprechende Tools?

Oder könnte sich jemand folgenden Quelltext ansehen -> Funktioniert irgendwie nicht....

01.
title Update-Manager for BEISPIEL-PROGRAMM 
02.
setlocal enabledelayedexpansion  
03.
SET versionsnummer=5.3.1.3 
04.
set "found=0"  
05.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (  
06.
set "Program=%%B"  
07.
set "Version=%%C"  
08.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" (  
09.
set "found=1"  
10.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No) 
11.
if %UPDATENVAR%==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat 
12.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK!  
13.
)  
14.
)  
15.
)  
16.
rem Anzeige aller Programme "REM" entfernen.  
17.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"  
18.
IF "!found!"=="0" call D:\Starte BEISPIEL-PROGRAMM installer.bat


PS: Vorab schon mal besten Dank für die sicherlich recht hilfreichen Antworten von euch...
Mitglied: 60730
17.07.2008 um 17:27 Uhr
Servus,

<[code]> <[/Code]>
01.
set "Program=%%B"  
02.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" ( 
03.
 
Ent weder oder
Program oder !Program! ????
Das gleiche bei Version...
Bitte warten ..
Mitglied: miniversum
17.07.2008 um 18:48 Uhr
Hier:
01.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)
hast du ein "/p" nach dem set vergessen:
01.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)
Bitte warten ..
Mitglied: Biber
17.07.2008 um 18:54 Uhr
Moin nicolasduke,

<OT>
falls ich es noch nicht erwähnt haben sollte: Ich mag keine ODER-Fragen.

Das hier wird wieder so ein Bandwurm-Beitrag, der NIE "gelöst" wird.

Bitte entscheide Dich:
  • sollen wir Dir den Schnipsel zum Laufen bringen?
  • oder suchst Du wirklich einen Batch-Parser?
  • Wenn letzteres - wer sollte so etwas geschrieben haben und wozu????

Meine Bitte: Ändere den Titel auf: "Fehler im Batchskript" oder so etwas.
</OT>

Grüße
Biber
Bitte warten ..
Mitglied: nicolasduke
20.07.2008 um 10:51 Uhr
Hallo Ihr,
zunächst besten Dank für eure Antworten. Irgendwie funktioniert das Teil immer noch nicht.

Die Batch macht vom prinzip her gar nichts, was sie ja eigentlich nicht sollte....
Woran's liegt, keine ahnung...

01.
title Update-Manager for BEISPIEL-PROGRAMM 
02.
@echo on 
03.
setlocal enabledelayedexpansion  
04.
SET versionsnummer=5.3.1.3 
05.
set "found=0"  
06.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (  
07.
set "!PROGRAM!=%%B"  
08.
set "!VERSION!=%%C"  
09.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" (  
10.
set "found=1"  
11.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)  
12.
if %UPDATENVAR%==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat 
13.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK!  
14.
)  
15.
)  
16.
)  
17.
rem Anzeige aller Programme "REM" entfernen.  
18.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"  
19.
IF "!found!"=="0" call D:\Starte BEISPIEL-PROGRAMM installer.bat

Bitte um Hilfe...

Beste Grüße
nicolasduke
Bitte warten ..
Mitglied: bastla
20.07.2008 um 22:44 Uhr
Hallo nicolasduke!

In den "set"-Zeilen ist kein Variablenbegrenzer (also auch nicht "!") nötig, daher:
01.
set "PROGRAM=%%B" 
02.
set "VERSION=%%C"
Weiter unten (beim Auswerten der Variablen %UPDATENVAR%) wäre dann wieder das "!" anstelle von "%" gefragt, also:
01.
if !UPDATENVAR!==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat
Leichter machst Du es den Benutzer/innen, wenn Du nicht die exakte Schreibweise des "Yes" überprüfst, sondern etwa nur den ersten Buchstaben, und auch da nicht auf Groß- oder Kleinschreibung bestehst, also etwa:
01.
if /i "!UPDATENVAR:~,1!"=="Y" call "D:\Starte BEISPIEL-PROGRAMM installer.bat"
Außerhalb der Schleife (zB für die Kontrolle von %found%) ist keine "delayedExpansion" erforderlich, daher wieder Variablenschreibweise wie gehabt:
01.
IF "%found%"=="0" call "D:\Starte BEISPIEL-PROGRAMM installer.bat"
Und falls ich mich nicht verzählt habe, hast Du eine schließende Klammer zuviel (oder auch eine zu wenig geöffnet ).

Grüße
bastla

P.S.: TimoBeil hat das mit den "<code></code>"-Tags als Formatierungshinweis gemeint ...
Bitte warten ..
Mitglied: nicolasduke
21.07.2008 um 15:37 Uhr
Also Leute,
der update manager funktioniert leider immer noch nicht. Ich bin irgendwie am verzweifeln.

Was macht das ding konkret?
- Die cmd startet, wie gehabt, bleibt länger offen als bisher und schließt sich gleich wieder.
- Egal ob die Programmversion veraltet ist oder nicht, die Installation startet nie.
- Der Benutzer kann darüberhinaus auch nie entscheiden, ob installiert werden soll oder nicht - klar, wie auch, wenn sich die cmd gleich wieder schließt...

Führe ich meinen Update-Manager unter cmd mit:
01.
start d:\clonecd updatemanager.bat
aus, dann öffnet sich immer der Installer.


Hier nochmal der Quelltext:
01.
title Update-Manager for CloneCD 
02.
@echo on 
03.
setlocal enabledelayedexpansion 
04.
SET versionsnummer=5.3.1.3 
05.
set "found=0" 
06.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO ( 
07.
set "PROGRAM=%%B" 
08.
set "VERSION=%%C" 
09.
if "!PROGRAM!"=="CloneCD" ( 
10.
set "found=1" 
11.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p 
12.
UpdatenVar=Möchten Sie CloneCD 5.3.1.3 installieren?(Yes/No) 
13.
if /i "!UPDATENVAR:~,1!"=="Y" call "D:\Starte CloneCD installer.bat" 
14.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK! 
15.
16.
17.
rem Anzeige aller Programme "REM" entfernen. 
18.
rem echo "!PROGRAM!", "!VERSION:~0,-1!" 
19.
IF "%found%"=="0" call D:\Starte CloneCD installer.bat

PS: Kann es vielleicht sein, dass WMIC sich nur auf Installationen bezieht, die mit dem Windows Installer installiert wurden?

Ich hab mir mal mit:
01.
WMIC /OUTPUT:Software.html Product get name,version /FORMAT:hform
eine Softwareliste erstellt und da zeigt's nur etwa die hälfte an Software an, die ich installiert habe...

Wie kann ich in meinem Quelltext nach allen, auf dem System installierten Programmen suchen lassen? Und nicht nur nach denen, die wahrscheinlich mit dem WindowsInstaller installiert wurden?

Hab hier mal einen anderen Quelltext gefunden - ob er was nützt, ich weis es nicht.:
01.
Public Sub check_sw() 
02.
 
03.
    Dim strComputer 
04.
    Dim objReg 
05.
    Dim strKeyPath 
06.
    Dim subkey 
07.
    Dim arrSubKeys 
08.
    Dim strDisplayName 
09.
    Dim strDisplayVersion 
10.
    Dim strPublisher 
11.
     
12.
'======================================================= 
13.
'DEFINIERT HKLM ALS HEX-VALUE (FÜR ENUMERATE) 
14.
'======================================================= 
15.
    Const HKLM = &H80000002 
16.
     
17.
    strComputer = "." 
18.
 
19.
    DoEvents 
20.
        frm_install.lbl_warten.Visible = True 
21.
    DoEvents 
22.
     
23.
    frm_install.lstb_software.Clear 
24.
     
25.
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
26.
    strComputer & "\root\default:StdRegProv") 
27.
     
28.
'======================================================= 
29.
'EINZULESENDE REGISTRY-WERTE 
30.
'======================================================= 
31.
    strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" 
32.
    objReg.EnumKey HKLM, strKeyPath, arrSubKeys 
33.
     
34.
'======================================================= 
35.
'REGISTRY-EINTRÄGE WERDEN AUFGESCHLÜSSELT 
36.
'======================================================= 
37.
    For Each subkey In arrSubKeys 
38.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "DisplayName", strDisplayName 
39.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "DisplayVersion", strDisplayVersion 
40.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "Publisher", strPublisher 
41.
        If strDisplayName <> "" Then 
42.
            frm_install.lstb_software.AddItem (strDisplayName) & Chr(32) & strDisplayVersion & Chr(32) & strPublisher 
43.
        End If 
44.
    Next 
45.
    frm_install.chb_systemcheck.Value = vbChecked 
46.
    frm_install.lbl_warten.Visible = False 
47.
    Set objReg = Nothing

Grüße
nicolasduke
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Hyper-V
gelöst Fehler auf Hyper-V nach Tausch eines Mainboard und Raid-Controllers (17)

Frage von Henere zum Thema Hyper-V ...

Windows Server
Windows-Update für Secure-Boot-Fehler macht BIOS-Updates erforderlich (2)

Link von Penny.Cilin zum Thema Windows Server ...

Windows 7
gelöst Fehler nach Wiederherstellung aus Image (8)

Frage von zeroblue2005 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...