65984
Goto Top

Autostart Pfad ueber eine Batch auslesen

Ich möchte gerne in einer Batch - Datei den Autostart Pfad auslesen, unabhängig welches Betriebssystem installiert ist. Ich hab nach einer Windows Variable gesucht, leider nichts gefunden. In der registry befindet sich eine Variable Common Startup, die als Wert den Autostart Pfad hat.
Ich kann zwar alle Variable aus diesem "Verzeichnis" herauslesen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\
ich möchte aber nur die eine (Common Startup)

Mit dieser Funktion komm ich etwas an mein Ziel heran, allerdings ließt er mir nicht wirklich den Wert für Common Startup aus sondern ich bekomm diesen Wert zurück:
Einstellungen\Benutzername\EigeneDateien\

hier das verwendete Script:

for /f "tokens=2* delims= " %A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\" /v Common Startup') do set Startup=%%B
echo %Startup%
pause

Ich hoffe ihr könnt mir helfen face-smile

Viele Dank schonmal


[Edit Biber] Verschoben von "Windows" nach "Batch & Shell" [/Edit]

Content-Key: 89315

Url: https://administrator.de/contentid/89315

Printed on: April 19, 2024 at 13:04 o'clock

Mitglied: 60730
60730 Jun 06, 2008 at 14:31:04 (UTC)
Goto Top
Servus,

"Autostart Pfad" was genau meinst du damit?
- das was du da mit deinem Script herausfindest - ist / sollte der Ordner sein, der als std. angezeigt wird, wenn der Explorer ohne weitere Parameter gestartet wird.
Mitglied: 65984
65984 Jun 06, 2008 at 14:38:36 (UTC)
Goto Top
Bei einem deutschen Betriebssystem würde das so aussehen:

C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart

und das steht auch so in der Registry:

Das ist der Schlüssel:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]

Das der Name:
"Common Startup"

Das der Wert:
"C:\\Dokumente und Einstellungen\\All Users\\Startmenü\\Programme\\Autostart"

Und je nachdem welche Sprache das Betriebssystem hat, ist dieser Wert anders. Und das möchte ich gerne auslesen können.
Mitglied: 65627
65627 Jun 06, 2008 at 14:43:25 (UTC)
Goto Top
"%Systemdrive%\Dokumente und Einstellungen\All Users\" spricht man über die Variable
%ALLUSERSPROFILE% an.


Und wenn du in deiner Reg-Query anstatt
/v Common Startup /v "Common Startup" verwenden würdest und den Backslash hinter Shell Folders weglässt, bekommst du sicher auch den richtigen Wert.
Member: bastla
bastla Jun 06, 2008 at 14:51:01 (UTC)
Goto Top
Hallo Azubi-DL und willkommen im Forum!

Sollte so gehen:
for /f "tokens=3*" %A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\"^|findstr /i /c:"Common Startup"') do set "Startup=%B"  
Grüße
bastla

[Edit] "/v" ersetzt durch "findstr" [/Edit]
Mitglied: 65984
65984 Jun 06, 2008 at 14:53:49 (UTC)
Goto Top
Viele dank das findstr hat mir gefehlt;)

das findstr sucht also nach dem "Common startup" aber woher weis die funktion das sie nur den Wert nehmen soll?^^
Mitglied: 60730
60730 Jun 06, 2008 at 14:56:43 (UTC)
Goto Top
Das der Wert:
"C:\\Dokumente und Einstellungen\\All Users\\Startmenü\\Programme\\Autostart"

Das ist die Abfrage
if exist "%allusersprofile%\startm~1\progra~1\autost~1\">nul  set Auto=%allusersprofile%\startm~1\progra~1\autost~1  
if exist "%allusersprofile%\startm~1\progra~1\start~1\">nul  set Auto=%allusersprofile%\startm~1\progra~1\start~1  

upssalla - ich werd alt und langsam...
Member: bastla
bastla Jun 06, 2008 at 15:19:31 (UTC)
Goto Top
Hallo Azubi-DL!

woher weis die funktion das sie nur den Wert nehmen soll?^^
Soferne ich Dich richtig verstehe, meinst Du die Zerlegung der Zeile - diese erfolgt anhand von Trennzeichen ("delims"). Die Ausgabe von "reg query" sieht eigentlich so aus:
    Common Startup<TAB>REG_SZ<TAB>Pfad...
Da ich kein Trennzeichen angegeben habe, werden die Defaults Leerzeichen und TAB zum Trennen verwendet - benötigt wird dann alles nach Teil 3 ("REG_SZ").

[Edit] Genauer (hinsichtlich des Trennzeichens) wäre übrigens:
for /f "tokens=2* delims=	" %A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\"^|findstr /i /c:"Common Startup"') do set Startup=%B  
wobei nach "delims=" ein TAB folgt - für die direkte Eingabe an der Kommandozeile etwas schwierig face-wink, in einem Batch aber machbar und vorzuziehen.
[/Edit]

Grüße
bastla
Mitglied: 65627
65627 Jun 06, 2008 at 15:25:00 (UTC)
Goto Top
Ich vermute mal, dass du das nicht richtig verstanden hast, siehe #3. face-smile

Die Abfrage war fehlerhaft.
Mitglied: 65984
65984 Jun 08, 2008 at 11:21:08 (UTC)
Goto Top
jepp habs verstanden und hat auch funktioniert.danke