summsamm
Goto Top

Problem Zeichensatz mit REG QUERY und Startmenü in Batch

Hallo Zusammen

In der Suche bei Administrator habe ich schon andere Lösungsansätze gefunden, die mir aber leider nicht weiterhelfen. Ich mache folgendes:
for /f "tokens=3 delims=:. " %%i in ('chcp') do set "CP=%%i"   
chcp 1252
FOR /F "TOKENS=2* DELIMS=	" %%a IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"^|findstr /i /c:"startup"') DO SET startup=%%b  
echo %startup%
chcp %CP%
pause
Nach Ausführung unter Windows XP Deutsch gibt er mir folgendes in der Dosbox aus:

C:\Dokumente und Einstellungen\service\Startmen³\Programme\Autostart

Den Pfad kann ich so also leider nicht verwenden weil das Umlaut im deutschsprachigen XP fehlt face-sad

Da unterschiedliche Betriebssysteme (WinXP/WinVista/WinSRV2k8/Win7) zum Einsatz kommen und auch unterschiedliche Sprachen kann ich folgendes nicht verwenden weil Pfade komplett anders sind:

for /f "delims=" %%i in ('dir /s /b "%usersprofile%\Autostart"') do set "Startup=%%i"   
for /f "delims=" %%i in ('dir /s /b "%usersprofile%\Startup"') do set "Startup=%%i"  

Ich würde mich über Tipps freuen.

Grüße SUMMSAMMSEMANN

Content-ID: 186689

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

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

Skyemugen
Skyemugen 19.06.2012 aktualisiert um 14:48:08 Uhr
Goto Top
Aloha,

tausche Zeile 04 und Zeile 05 miteinander.

Es ist wichtig, vor der Ausgabe bereits die Codepage wieder zurückzusetzen.

greetz André
summsamm
summsamm 19.06.2012 aktualisiert um 14:54:19 Uhr
Goto Top
Hallo Skyemugen

Sorry ich hatte deine erste Antwort in der ein sehr wichtiger Hinweis Stand mit dem aktualisieren meiner Nachricht irgendwie überschrieben. Da sich chcp 1252 nicht auf die Consolenausgabe bezieht scheint es zumindest so einwandfrei zu funktionieren:

chcp 1252
FOR /F "TOKENS=2* DELIMS=	" %%a IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"^|findstr /i /c:"startup"') DO SET startup=%%b   
cd %startup%
echo hello >test.txt
chcp %CP%
pause

Ich Danke dir und Teste nun ein wenig!
Skyemugen
Skyemugen 19.06.2012 aktualisiert um 15:04:31 Uhr
Goto Top
Aloha,

nö, hast du nicht, die hatte ich gelöscht :P

Da sich chcp 1252 nicht auf die Consolenausgabe bezieht

... steht im Gegensatz zu deinem EP.

greetz André

P.S.: Dem cd ist die Zurücksetzung der chcp i.d.R. Wurst (ob vorher oder nachher), der geht in diesem Fall sowieso über den systeminternen Kurznamen.
P.P.S.: Je nachdem, von wo du dein Skript startest, wäre ggf. ein cd /d sinnvoller, als allgemeiner Hinweis.

Aber wie gesagt: Technisch korrekt wäre die Rücksetzung der Codepage VOR der Verwendung des Umlautes.
summsamm
summsamm 19.06.2012 um 15:01:37 Uhr
Goto Top
Jedenfalls funktioniert der changedirectory mit chcp 1252 und ohne passiert folgendes:

C:\Dokumente und Einstellungen\service\Desktop>cd C:\Dokumente und Einstellungen
\service\Startmen³\Programme\Autostart
Das System kann den angegebenen Pfad nicht finden.

Ob nun die Ausgabe auf der Consolte korrekt ist oder nicht spielt für mich keine Rolle, Hauptsache er findet den Weg zum Autostart!