terence-chill
Goto Top

Name des übergeordneten Ordners ermitteln - Funktionierender Ansatz soll entschlackt werden

Ziel ist es, den Name des dem batchfile übergeordneten Ordners ausfindig zu machen - unabhänig davon, wo das batchfile hinterlegt ist (=> %~dp0%)
Mein Lösungsansatz ist leider etwas umständlich und ich bin mir sicher, dass das Problem effizienter gelöst werden kann.

G E L Ö S T ! ! !

Falls jemand selbiges Problem hat: Beitrag durchlesen und %~dp0% durch %cd% ersetzen und den von mir erwähnten one liner benutzen
Entschuldigt, dass ich erst einen Tick zu spät auf die Lösung kam.



Hallo zusammen,

im Prinzip steht die Aufgabenstellung schon komplett im "kurzen persönlichen Vorwort", deshalb springe ich sofort zu dem von mir erarbeiteten Code:

:startordner
SET token=0
SET urspr=a
SET urspr2=b

:subroutine
IF "%urspr%" NEQ "%urspr2%" (  
	for /f "delims=" %%a IN ('cd') DO set urspr=%%a  
	cd ..
	for /f "delims=" %%b in ('cd') DO set urspr2=%%b  
	SET /a token +=1
) ELSE (GOTO endroutine)
GOTO subroutine

:endroutine
FOR /F "tokens=%token% delims=\" %%c in ("%~dp0") DO SET ordnername=%%c  
cd "%~dp0%"  
goto continue

Durch die Suche kam ich zu folgendem one liner:

for /d %%A in (!varSource!) do set varLastPfad=%%~nxA
Jedoch eröffnet sich hier das Problem, dass durch %~dp0% ein \ am ende des Pfades steht und dieser Code für meine Ansprüche nicht genügt. Der back slash lässt sich sicherlich wegbekommen, nur wüsste ich nicht, wie ich das ähnlich elegant lösen könnte. Daher wäre es vermutlich am einfachsten für euch, hier anzusetzen.

Ich bin auf eure Ideen und Vorschläge gespannt!

Gruß

Content-ID: 173856

Url: https://administrator.de/forum/name-des-uebergeordneten-ordners-ermitteln-funktionierender-ansatz-soll-entschlackt-werden-173856.html

Ausgedruckt am: 24.12.2024 um 17:12 Uhr

bastla
bastla 28.09.2011 um 22:31:48 Uhr
Goto Top
Hallo Terence-Chill!

Was spräche gegen
if "%varLastPfad:~-1%"=="\" set "varLastPfad=%varLastPfad:~,-1%"
Mehr dazu mit "set /?" ...
Als Alternative:
for %%i in ("%~0\..") do set "varLastPfad=%%~fi"  
if "%varLastPfad:~-1%"=="\" set "varLastPfad=%varLastPfad:~,-1%"  
Wenn es aber überhaupt nur darum gehen soll, in den übergeordneten Ordner zu wechseln, dann einfach
cd "%~0\..\.."
Grüße
bastla
Terence-Chill
Terence-Chill 29.09.2011 um 08:26:50 Uhr
Goto Top
Hey bastla,

if "%varLastPfad:~-1%"=="\" set "varLastPfad=%varLastPfad:~,-1%"
> 
Mehr dazu mit "set /?" ...

genial, genau DAS hab' ich gesucht! Ich hatte ewig rumprobiert, aber auf die Idee, zwischen ~ und , einfach nichts zu schreiben, bin ich leider nicht gekommen. Ähnliches hab ich auch nicht durch set /? rausbekommen.

Wieder was dazu gelernt, vielen Dank!


PS: Ich hatte gestern versehentlich zu meiner Lösung den Verweis auf %path% gemacht, meinte allerdings %cd% - wurde korrigiert.