rubberman
Goto Top

Batch - SpecialFolder als Variable aus Datei lesen

Hallo Zusammen,

habe ein Batchskript, mit dem ich in einer INI-Datei lese und mit diesen Daten weiter arbeite.
Grundsätzlich kein Problem. Mir ist aber aufgefallen, dass ich in die INI keine batchüblichen SpecialFolder-Variablen schreiben kann.
Zum Ausprobieren habe ich folgendes Szenarium gebaut:
abc.bat und xyz.ini stehen im selben Verzeichnis.

abc.bat:
@echo OFF
SETLOCAL
::
SET "IniFile=xyz.ini"
SET "KWord=Pfad"
FOR /F "DELIMS== TOKENS=2" %%a IN ('FINDSTR "%KWord%" "%cd%" %IniFile%') DO SET p=%%a
::
ECHO %p%
PAUSE>NUL


xyz.ini:
Pfad=%userprofile%\Desktop

Wer's ausprobiert sieht, dass die Ausgabe so aussieht:
%userprofile%\Desktop

Das bedeutet, der Variablen p wird nur der Wert des Teilstrings zugeornet, ohne dass %userprofile% interpretiert wird.

Was muss ich also tun um folgende Ausgabe zu erhalten:
C:\Dokumente und Einstellungen\>User sowieso<\Desktop

(PS: Wenn in der INI mal ein normaler Pfad in der Form "Pfad=C:\irgendwie\irgendwo" steht, sollte das ganze natürlich auch noch funzen.)

Danke vorab
Steffen

Content-ID: 79106

Url: https://administrator.de/forum/batch-specialfolder-als-variable-aus-datei-lesen-79106.html

Ausgedruckt am: 22.12.2024 um 14:12 Uhr

rubberduck
rubberduck 25.01.2008 um 09:41:26 Uhr
Goto Top
Versuch es mal so:

abc.bat
@ECHO OFF
SETLOCAL
::
SET "IniFile=xyz.ini"  
SET "KWord=Pfad"  
FOR /F "DELIMS== TOKENS=2" %%a IN ('FINDSTR "%KWord%" %IniFile%') DO call :Process %%a  
::
:Process
ECHO %1
PAUSE>NUL

xyz.ini
Pfad="%userprofile%\Desktop"  
Pfad="%systemroot%"  
...etc.
Um Fehler auszumerzen schreib Deine Pfade mit Hochkomma.

Wenn alle Stricke reissen, dann frag mal Biber. Er ist eine Koriphäe auf dem Gebiet des Shell-Scripting (Batch) face-wink
rubberman
rubberman 25.01.2008 um 10:44:48 Uhr
Goto Top
Hallo rubberduck,

danke für die schnelle Antwort. War genau der Denkanstoß, der mir gefehlt hat.

Gruß
Steffen
miniversum
miniversum 25.01.2008 um 12:49:00 Uhr
Goto Top
Oder mach diese kleine Änderung:
Ändere:
FOR /F "DELIMS== TOKENS=2" %%a IN ('FINDSTR "%KWord%" "%cd%" %IniFile%') DO SET p=%%a
in
FOR /F "DELIMS== TOKENS=2" %%a IN ('FINDSTR "%KWord%" "%cd%" %IniFile%') DO CALL SET p=%%a

miniversum