Anzeige

 Windows (XP) CMD directory und eine Stufe höher


takidoso

Erfahrenes Mitglied
#1
Hallo und Halli,
auf einer sehr nutzvollen Seite fand ich die Befehlskombination um den Directory-Pfad aus einem Parameter zu holen.
Code:
%~p0
Nun hätte ich zu gerne davon eine Stufe höher und hatte solche Sachen ausprobiert wie
Code:
APP_HOME=%~p0
APP_HOME=%~p%APP_HOME%
oder
Code:
APP_HOME=%~p0
APP_HOME=%~pAPP_HOME
aber auch
Code:
APP_HOME=%~p0~p
Natürlich erfolglos, da ich die generelle Syntaxregeln dieser Kryptik offenbar nicht wirklch verstehe :-(

Hat da jemand eine knackige Löstung für mich?

vielen Dank für Hinweise im Voraus

Takidoso
 

deepthroat

Erfahrenes Mitglied
#2
Hi.
auf einer sehr nutzvollen Seite fand ich die Befehlskombination um den Directory-Pfad aus einem Parameter zu holen.
Siehe "help call".
Nun hätte ich zu gerne davon eine Stufe höher und hatte solche Sachen ausprobiert wie
Bsp:
Code:
setlocal EnableDelayedExpansion
pushd "%~p0\.." && set parentdir=!CD! && popd
Gruß

PS: Das funktioniert natürlich nur falls das Verzeichnis existiert.
 
Zuletzt bearbeitet:

takidoso

Erfahrenes Mitglied
#3
Das war ein echter Fundus für mich, danke!
Aber noch eine Frage bezogen auf ENABLEEXTENSIONS bzw. ENABLEDELAYEDEXPANSION
SETLOCAL

Mit den Befehlserweiterungen wird der SETLOCAL-Befehl folgendermaßen verändert:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
Aktiviert bzw. deaktiviert Befehlserweiterungen. Geben Sie
CMD /? ein, um weitere Informationen zu erhalten.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
Aktiviert bzw. deaktiviert die verzögerte Erweiterung von
Umgebungsvariablen. Geben Sie SET /? ein, um weitere Informationen
zu erhalten.
erklärt leider nicht ganz für mich was eine verzögerte Erweiterung bedeutet.
Leider war mein Googeln diesbezüglich auch nicht so recht befriedigend.
Was ist also der Unterschied zwischen verzögerte und ncht verzögerte Erweiterung?

Mit neugierigen Fragen

Takidoso
 
Zuletzt bearbeitet:

deepthroat

Erfahrenes Mitglied
#4
Aber noch eine Frage bezogen auf ENABLEEXTENSIONS bzw. ENABLEDELAYEDEXPANSION

erklärt leider nicht ganz für mich was eine verzögerte Erweiterung bedeutet.
Leider war mein Googeln diesbezüglich auch nicht so recht befriedigend.
Was ist also der Unterschied zwischen verzögerte und ncht verzögerte Erweiterung?
Die %x% Variablen werden pro Befehl nur einmal expandiert und zwar bevor der Befehl ausgeführt wird.

Bsp:
Code:
set x=1
FOR /L %%i IN (1,1,5) DO (
    set /a x=%x%+%%i
    echo.%%i: %x%
)
echo.res: %x%
Ausgabe:
Code:
1: 1
2: 1
3: 1
4: 1
5: 1
res: 6
Die !x! Variablen werden verzögert expandiert und so wird immer der aktuelle Wert eingesetzt:
Code:
setlocal EnableDelayedExpansion
set x=1
FOR /L %%i IN (1,1,5) DO (
    set /a x=!x!+%%i
    echo.%%i: !x!
)
echo.res: %x%
Ausgabe:
Code:
1: 2
2: 4
3: 7
4: 11
5: 16
res: 16
Gruß
 
Anzeige
Anzeige