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
GELÖST

Batch - Installationspfad wird nicht gefunden, wenn im Registry-Zweig eine Systemvariable enthalten ist - Fortsetzung

Frage Entwicklung Batch & Shell

Mitglied: onegasee59

onegasee59 (Level 2) - Jetzt verbinden

03.11.2008, aktualisiert 17.10.2012, 7683 Aufrufe, 12 Kommentare

IHallo,

ich nehme Bezug auf meinen Erst-Beitrag zum Thema auf http://www.administrator.de/frage/batch-installationspfad-wird-nicht-ge ... da den offensichtlich niemand mehr liest.

Ich konnte das Problem jetzt einkreisen.

01.
set "WMPTemp=%temp%\WMPPath.vbs" 
02.
echo strWMPPath = WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe\Path") > "%WMPTemp%" 
03.
echo If Right(strWMPPath,1) ^<^> "\" Then strWMPPath = strWMPPath ^& "\" >> "%WMPTemp%" 
04.
echo If Not Mid(strWMPPath, 2, 1) = ":" Then WScript.Quit(1) >> "%WMPTemp%" 
05.
echo WScript.Echo strWMPPath >> "%WMPTemp%" 
06.
for /f "tokens=1* delims=:" %%i in ('cscript //nologo "%WMPTemp%"') do set "WMPDrive=%%i:" & set "WMPPath=%%j" 
07.
del /f /s /q "%WMPTemp%" > nul
Entscheidend ist die 2. Zeile.

Sie ergibt bei mir für die Variable "strWMPPath":

unter XP = C:\Programme\Windows Media Player
unter WIN Vista = %ProgramFiles%\Windows Media Player

Wie bekomme ich obigem Codeschnippsel jetzt bei gebogen das es den echten Pfad auch unter Vista erzeugt.

So das es sowohl unter XP als auch Vista funktioniert und auch in Vista die Variablen "WMPDrive" und "WMPPath" echte Inhalte erhalten, also:
%WMPPath% --> WMP-Install-Pfad=\Programme\Windows Media Player\
%WMPDrive% --> WMP-Install-LW=C: (hier kann natürlich auch einen anderes LW stehen)

Danke
onegasee59
Mitglied: paulepank
03.11.2008 um 22:45 Uhr
Hallo onegasee59,

wollte mich eigenlich schon bei deinem ersten Thread beteiligen.
Da du aber nicht präzise geschrieben hast, für welche Betriebssysteme das gelten soll und ob
sogenannte Fremdprogramme zum Einsatz kommen dürfen, habe ich mich erst mal zurückgehalten.
Das sollte doch einem so erfahrenen Mitglied hier eigentlich nicht passieren

Wenn es dir immer nur noch darum geht eine 9,10 oder 11 als Ergebnis zu erhalten, benutze folgenden Code für WinXP und Vista
01.
@echo off 
02.
for /f "tokens=3 delims=,	 " %%i in ('reg query HKLM\Software\Microsoft\Mediaplayer\PlayerUpgrade^|findstr /i playerversion') do echo %%i
Wichtig ist der Delimiter:
Er besteht aus <Komma><Tab><Blank>

cu paulepank

EDIT: sollte man den Thread nicht eher nach Batch & Shell verschieben ?
Bitte warten ..
Mitglied: onegasee59
03.11.2008 um 23:31 Uhr
Hallo paulepank

erstmal Danke!
Ich dachte es wäre schon im ersten Thread klar geworden. Keine Zusatztools. Das Tool soll für XP und Vista nur per Batch und vbs erstellt werden.
Es geht auch NICHT um die Versionsprüfung die erfolgt im Anschluss. Die Syntax dafür funktioniert einwandfrei sowohl unter XP als auch Vista.

Das Tool macht wie folgt:

Zuerst erfolgt Prüfung auf Betriebssystem.
Wird nicht XP oder Vista erkannt, wird das Tool mit entsprechender Fehler-Meldung abgebrochen.
Wird XP oder Vista erkannt, aber nicht 32bit und nicht DE oder ENG, wird das Tool mit entsprechender Fehler-Meldung abgebrochen.
Dann soll es auf unbekannten XP/Vista System den tatsächlichen Installationspfad vom Windows Media Player finden.
Der obige Code funktioniert unter XP einwandfrei aber nicht unter Vista, weil unter Vista im Registryzweig und dessen Wert "Path" der Verweis auf das Installationsverzeichnis nicht im Klartext wie bei XP hinterlegt ist (in meinem Fall als "C:/Programme/Windows Media Player"), sondern als "%ProgramFiles%/Windows MediaPlayer"!!!

Diesen Inhalt von "%ProgramFiles%" bekomme ich nicht extrahiert und dadurch ergibt sich mit obigem Code unter Vista ein Fehler bei der realen Pfaderkennung:

edit am 04.11.2008 08:42 Uhr
Wenn Du magst speicher dir bitte:
strWMPPath = WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe\Path")
WScript.Echo strWMPPath
If Right(strWMPPath,1) <> "\" Then strWMPPath = strWMPPath & "\"
If Not Mid(strWMPPath, 2, 1) = ":" Then WScript.Quit(1)
WScript.Echo strWMPPath
als "WMPpath.vbs"

Lass es mal unter XP und dann unter Vista laufen. Die Ausgabe zeigt anschaulich was ich meine:

Unter XP erzeugt "WMPpath.vbs" die Ausgabe: C:\Programme\Windows Media Player
Unter Vista erzeugt "WMPpath.vbs" die Ausgabe: %ProgramFiles%\Windows Media Player

Das bedeutet mit dem Code, hier im Thread ganz oben:
Unter XP erfolgt von "strWMPPath" die Übergabe an "WMPTemp" von: C:\Programme\Windows Media Player
Unter Vista erfolgt von "strWMPPath" die Übergabe an "WMPTemp" von: %ProgramFiles%\Windows Media Player

Das ergibt vom for-Zweig folgende Auswertung:

für XP:
%WMPPath% --> gefundener WMP-Install-Pfad=\Programme\Windows Media Player\
%WMPDrive% --> gefundenes WMP-Install-LW=C:
bei XP also wie gewünscht.

für Vista
%WMPPath% --> gefundener WMP-Install-Pfad=
%WMPDrive% --> gefundenes WMP-Install-LW=
Bei Vista also Fehler

Wie bekomme ich die "Kuh vom Eis"?

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 00:14 Uhr
Hallo onegasee59,

bei deiner VBS-Lösung kann ich dir leider nicht helfen.
du wolltest u.A. eine Lösung per Batch für die Version. Die habe ich dir gegeben und sie läuft auf XP und Vista.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 00:26 Uhr
Vielen Dank paulepank für deine Mühe,

aber ich glaube Du verstehst mich doch nicht.
Deine Lösung ist Super Ok, nutzt mir aber leider nichts.
Für die Versionsprüfung habe ich bereits ein unter XP und Vista 100% funktionierendes Codeschnippsel innnerhalb der Batch. Ich benötige tatsächlich zwingend zuerst die Syntax für das Finden des _tatsächlichen_ Installationspfades von Windows Media Player die dann nicht nur für XP sondern auch für Vista funktioniert. Sicher nur ne Kleinigkeit, wenn man weiß wie...

Dann hoffe ich mal weiter... Hiiiiiiiilfe.......baaaaaaaaastla, Biiiiiiiiiiber

Gruß und Danke nochmal.
onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 08:15 Uhr
... nach einer Mütze voll Schlaf

  • deinen VBS-Code habe ich ausprobiert. Ich bekommme sowohl bei XP als auch bei Vista ein leeres Fenster angezeigt.
  • Frage - was ist an folgender Aussage falsch:
der Programmpfad wird durch
01.
echo %ProgramFiles%\Windows Media Player
angezeigt. Ob Vista oder XP, ob 27 oder 68 Bit, ob japanisch oder finnisch - der WMP steht immer im Verzeichnis "Windows Media Player". Das ist im System fest verdratet. Einzig das Laufwerk variiert.
  • Brauchst du das Laufwerk auch einzeln ?
  • Damit du auch Hilfe von anderen bekommst, solltest die den Thread w.o. beschrieben verschieben (lassen).

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 08:50 Uhr
Morgen,

Oh, Sorry. Der Code ist falsch - ich korrigiere oben - Jetzt stimmt es.

Die 2. Zeile ist eigentlich nicht erforderlich - geht aber nicht anders ,um zu zeigen was bei der Variable rauskommt.
Bei Vista erscheint nämlich ohne Zeile 2 gar nichts, weil wie schon gesagt "%ProgramFiles%\Windows Media Player" im weiteren Scriptverlauf nicht ausgewertet werden kann.
Grund - der Inhalt von %ProgramFiles% (bei Vista) ist für das Script einfach nur eine Zeichenfolge keine Variable.

Bei mir (Dualbootsytem C: = XP / G: = Vista) ergibt das als Ausgabe von Zeile 2 und letzte Zeile 5

Screenshot - vbs-Variante - XP = http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-2_XP.jpg http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-5_XP.jpg
Screenshot - vbs-Variante - Vista = http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-2_Vista.jpg für Zeile 5 - keine Anzeige bei Vista

Ja - LW der WMP-Installation benötige ich
Ja - Antrag bei Moderatoren auf Threadverschiebung habe ich gestern gemacht.

Übrigens, so sieht es mit einer Batchvariante aus:

01.
@echo off && setlocal 
02.
mode 120,24 
03.
rem Variante von Biber - WMP-Installationspfad finden, Abbruch wenn keine Installation von WMP 9 (oder hoeher) gefunden wird 
04.
set WMPkey="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe" 
05.
for /f "skip=2 tokens=2*" %%i in ('reg query %WMPkey% /v Path') do set "WMPPath=%%~pnxj" & set "WMPDrive=%%~dj" 
06.
if [%WMPPath:~-1%] neq [\] set "WMPPath=%WMPPath%\" 
07.
echo. 
08.
echo. 
09.
echo WMP-Pfad    = %WMPPath% 
10.
echo WMP-LW      = %WMPDrive% 
11.
echo WMP-LW/Pfad = %WMPDrive%%WMPPath% 
12.
echo. 
13.
echo. 
14.
pause 
15.
endlocal
Screenshot - cmd-Variante - XP = http://www.der-wmp.de/extra/xyz/WMPPath-cmd_XP.jpg
Screenshot - cmd-Variante - Vista = http://www.der-wmp.de/extra/xyz/WMPPath-cmd_Vista.jpg

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 09:56 Uhr
Hallo,
...und würdest du jetzt auf meine Frage (Aussage) eingehen ?
Falls du unbedingt alles mit vbs machen willst, klinke ich mich jetzt hier aus.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 10:21 Uhr
Hhmm, ich habe doch schon alles beantwortet!

1. Ich brauche den Installationspfad als Variable - NICHT als feste Wertvorgabe.
D. h. ich muss erreichen das unter Vista der Inhalt der System-Variablen "%ProgramFiles%" aus dem gefundenen Installationspfad im vbs-Script oder der Batch verarbeitet wird und nicht die reine Zeichenkette "%ProgramFiles%"
Dieses Variablen-Problem ist zwar aktuell jetzt erst unter Vista aufgetaucht, könnte aber, bei entsprechend vorhandenem Pfad mit solch einer Systemvariablen, auch auf XP so auftauchen.
Die benötigte Lösung soll daher Universal funktionieren...
1.1. Bei fester Pfadangabe...
1.2. Bei Systemvariable...
...im Installationspfad = Wert "Path" im Registry-Zweig: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe"

2. Ich brauche das LW einzeln als Variable - NICHT als feste Wertvorgabe.
3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 10:43 Uhr
auch Hhmm,
ich glaube diesmal hast du mich mißverstanden.
Das install-dir ist fest vorgegeben und muß nicht erst ermittelt werden.
3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

das ist nicht gut, denn es erfolgt keine neue Benachrichtigungsmail

Aber bitte , dann eben so

01.
@echo off 
02.
for /f "tokens=3 delims=,	 " %%i in ('reg query HKLM\Software\Microsoft\Mediaplayer\PlayerUpgrade^|findstr /i playerversion') do echo Version=%%i 
03.
set WMP="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\mediaplayer" 
04.
for /f "tokens=3*" %%i in ('reg query %WMP% /v "installation directory"^|findstr /i /c:"installation directory"') do echo Install-dir=%%~pnxj & echo LW=%%~dj
jetzt noch Wünsche ? oder anders gefragt - ist die Kuh jetzt vom Eis ?

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 11:44 Uhr
Hallo paulepank,

erstmal herzlichst Danke für die Mühe,

Das install-dir ist fest vorgegeben und muß nicht erst ermittelt werden.
Klar, für den WMP und die sonstigen MS-eigenen Programme/Komponennten funktioniert das. Bei Fremdsoftware aber wie z.. Bsp für Nero nicht mehr.
Da ich den Code ja universell gestalten/einsetzen will [1], suche ich eben die Variante über Variablen auslesen und benötige daher die Daten aus:

Wert "Path" im Registry-Zweig: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

das ist nicht gut, denn es erfolgt keine neue Benachrichtigungsmail
Ja Sorry, hab es gemacht auf Grund Deiner Bemerkung "Falls du unbedingt alles mit vbs machen willst, klinke ich mich jetzt hier aus."

jetzt noch Wünsche ? oder anders gefragt - ist die Kuh jetzt vom Eis ?
Für WMP zuerstmal ja - Funktioniert einwandfrei unter XP/Vista.
[1]
Dennoch suche ich immer noch die Variablen-Variante oder den Grund warum (egal ob vbs oder batch) beim finden einer Systemvariablen (im genannten Registry-Zweig) nur deren reine Zeichenkette, statt deren Inhalt übergeben wird. Warum also, wie im hier vorliegend Fall nur "%\ProgramFiles%\Windows Media Player" anstatt dem echten Pfad "G:\Program Files\Windows Media Player" übergeben wird?

Hast Du dazu auch einen Idee?

Nicht böse sein - bitte nicht als undankbar verstehen.
Im Gegenteil dank Deiner Lösung könnte ich zumindest für den WMP erstmal weitermachen und das Gesamt-Tool fertigstellen.

Gruß
onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 12:16 Uhr
Hallo ,

Hast Du dazu auch einen Idee?

leider nein - vbs null Ahnung

Nicht böse sein - bitte nicht als undankbar verstehen.

nö, nur enttäuscht
Warum hast in der Überschrift eine Lösung für den WMP gesucht und schreibst nicht von Anfang an was du eigentlich willst. Für eine Variante aller oder einiger installierter Programme wäre der Ansatz ganz anders. Wir diskutieren hier einen Tag lang rum und dann sowas. Das ist etwas, was ich nicht akzeptieren kann.
Was ist eigentlich so schwer daran das Problem in der Überschrift und generell genau zu beschreiben ? Die Frage war jetzt rein rhetorisch.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 12:26 Uhr
Hallo paulepank,

muss ja keine VBS-Lösung sein.

> Nicht böse sein - bitte nicht als undankbar verstehen.

nö, nur enttäuscht
Warum hast in der Überschrift einen Lösung für den WMP
gesucht und schreibst nicht von Anfang an was du eigentlich willst.

Der WMP war nur der Aufhänger auf Grund eine geplanten Tools.
Bitte um Entschuldigung, aber ich hatte mich so in das Problem verbohrt, das ich wohl verkannt habe wie es beim Gegenüber tatsächlich ankommt.

Was ist eigentlich so schwer daran das Problem in der Überschrift und generell genau zu beschreiben

Ich versuche es

onegasee59
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

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

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 ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...