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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79106
Url: https://administrator.de/contentid/79106
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
3 Kommentare
Neuester Kommentar
Versuch es mal so:
abc.bat
xyz.ini
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)
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.
Wenn alle Stricke reissen, dann frag mal Biber. Er ist eine Koriphäe auf dem Gebiet des Shell-Scripting (Batch)