Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [batch] ordnernamen (https://www.delphipraxis.net/115199-%5Bbatch%5D-ordnernamen.html)

_frank_ 7. Jun 2008 22:15


[batch] ordnernamen
 
ich suche schon seit Ewigkeiten nach einer Möglichkeit den aktuellen Ordnernamen (nicht den ganzen Pfad) zu ermitteln...nach stundenlangem googlen habe ich bisschen mit %cd% rumexperimentiert, jedoch habe ich keine funktionierende Variante hinbekommen.

Hoffe irgendjemand hat da eine Idee :)

Gruß Frank

Christian Seehase 7. Jun 2008 22:52

Re: [batch] ordnernamen
 
Moin Frank,

der aktuelle Order wird schlicht durch . (ein Punkt) angegeben.
Oder brauchst Du explizit den Namen?

Fussball-Robby 7. Jun 2008 23:01

Re: [batch] ordnernamen
 
Den Namen bekommst du so:
Code:
@echo off
for %%i in (%cd:\=,%) do set MyDir=%%i
echo %MyDir% 
pause

_frank_ 7. Jun 2008 23:04

Re: [batch] ordnernamen
 
ich brauch den namen...

ums mal zu erklären, ich will ein script schreiben, welches mir bestimmte dateien in einem Verzeichnis (mittels 7zip) packt, wo das archiv den Namen des ordners hat. wie die funktion "hinzufügen zu <ordner>.zip" nur halt automatisiert, da ich noch Dateien ausklammern will (funktioniert schon).

Danke Robby, das war genau das, was ich gesucht habe :)

Gruß Frank

Christian Seehase 7. Jun 2008 23:19

Re: [batch] ordnernamen
 
Moin Robert,

auch schön.

Ich hätte noch folgendes anzubieten:

Code:
@ECHO OFF
for %%I IN (%~0) DO SET SELF=%%~dI%%~pI
SET SELF=%SELF:~,-1%
ECHO %SELF%
pause
Lässt man das zweite SET weg, bekommt man den Pfad mit \ am Ende, sonst ohne.

Fussball-Robby 7. Jun 2008 23:25

Re: [batch] ordnernamen
 
Hallo Christian,

bei deiner Variante bekomme ich den ganzen Pfad zum Ordner. Das wollte der TE aber nicht, er wollte doch nur den Ordnernamen..

_frank_ 7. Jun 2008 23:32

Re: [batch] ordnernamen
 
was jetzt noch interesant wäre: ob es möglich ist, 2 ebenen weiter oben den Namen zu bekommen :)

Grund dafür ist, dass ich manchmal SVN-Strukturen habe und somit der "programmname" nicht im letzten ordner steckt (dieser heist da trunk).sowas wie arrays sind mir in bath nicht bekannt...

//edit lässt sich das mit dem leerzeichen irgendwie umgehen? hab versucht das in der for-schleife mittels " zu kapseln, hat aber nicht geklappt (trotzdem nur letzter teil)

Gruß Frank

Christian Seehase 7. Jun 2008 23:52

Re: [batch] ordnernamen
 
Zitat:

Zitat von Fussball-Robby
Hallo Christian,

bei deiner Variante bekomme ich den ganzen Pfad zum Ordner. Das wollte der TE aber nicht, er wollte doch nur den Ordnernamen..

Dann lässt man eben das %%~dI weg ;-)

Nachtrag:
Deine Fassung hat übrigens bei Ordnern mit Leerzeichen das gleiche Problem wie meine ... es wird nur der Anfang des Ordnernamens angezeigt ;-)

Fussball-Robby 8. Jun 2008 09:42

Re: [batch] ordnernamen
 
Zitat:

Zitat von _frank_
was jetzt noch interesant wäre: ob es möglich ist, 2 ebenen weiter oben den Namen zu bekommen :)

Ja, das ist Möglich. Mittels pushd kannst du den Ordner wechseln, wobei .. der übergeordnete Ordner ist. Wenn du 2 Ordner nach oben wilst sähe der Code also so aus:
Code:
@echo off
pushd ..\..
for %%i in (%cd:\=,%) do set MyDir=%%i
echo %MyDir%
pause
Bei 3 Ordnern wäre es pushd ..\..\.. usw.
Zitat:

Zitat von _frank_
lässt sich das mit dem leerzeichen irgendwie umgehen? hab versucht das in der for-schleife mittels " zu kapseln, hat aber nicht geklappt (trotzdem nur letzter teil)

Ich habe es gestern auch noch ausprobiert, allerdings keine Lösung gefunden. Ich probier gleich nochmal ein wenig rum :wink:

_frank_ 8. Jun 2008 10:28

Re: [batch] ordnernamen
 
Zitat:

Zitat von Fussball-Robby
Ja, das ist Möglich. Mittels pushd kannst du den Ordner wechseln, wobei .. der übergeordnete Ordner ist.

ich glaube es war gestern ein wenig zu spät ;) hätte ja selber drauf kommen können, entsprechend das Workingdir zu wechseln per cd/pushd.

wär noch super, wenn es ne möglichkeit gäbe mit den leerzeichen...wie gesagt ich habs versucht mittels
Code:
for %%i in (%cd:\=,%) do set MyDir="%%i"
set MyDir=%MyDir:~1,-1%
echo %MyDir%
Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz