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-Key: 79106

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

Printed on: April 25, 2024 at 15:04 o'clock

Member: rubberduck
rubberduck Jan 25, 2008 at 08:41:26 (UTC)
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
Member: rubberman
rubberman Jan 25, 2008 at 09:44:48 (UTC)
Goto Top
Hallo rubberduck,

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

Gruß
Steffen
Member: miniversum
miniversum Jan 25, 2008 at 11:49:00 (UTC)
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