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, 2732 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 ..
Ähnliche Inhalte
Server
Fehler in jQuery (7)

Frage von Yanmai zum Thema Server ...

Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Outlook & Mail
gelöst Outlook 2010 Fehler 0x80004005 von Outlook können kein abonnierten Ordner (4)

Frage von garack zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Festplatten, SSD, Raid
gelöst Fehlerhafte Blöcke im RAID 10 (12)

Frage von Kojak-LE zum Thema Festplatten, SSD, Raid ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (12)

Frage von planetIT2016 zum Thema Windows Server ...

Netzwerkgrundlagen
gelöst Cisco SG500 Series LAG hat sich von selbst umgestellt (11)

Frage von Ex0r2k16 zum Thema Netzwerkgrundlagen ...