michi262
Goto Top

In Unterordner navigieren

Hallo

ich hab ein Problem un zwar:

Ich möchte in einen Unterordner navigiern. Allerdings soll das auch gehen, wenn das Programm an einem beliebigen Pfad liegt.


z. B. Ich bin im Ordner C:\Dokumente und Einstellungen\Admin\Eigene Dateien\xyz\

und will nun in das Verzeichnis C:\Dokumente und Einstellungen\Admin\Eigene Dateien\xyz\ordner\

nun weiß das Programm aber nich wo es sich befindet. Es hat also keine Ahnung das es im Verzeichnis C:\Dokumente und

Einstellungen\Admin\Eigene Dateien\xyz\ liegt. Wie lmache ich das nun, dass ich egal wo das Programm liegt immer in den Unterordner

komme

MFG Michi262

Content-ID: 78984

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

Ausgedruckt am: 16.11.2024 um 09:11 Uhr

bastla
bastla 23.01.2008 um 23:57:52 Uhr
Goto Top
Hallo Michi262!

Ich bin im Ordner C:\Dokumente und Einstellungen\Admin\Eigene Dateien\xyz\ und will nun in das Verzeichnis C:\Dokumente und Einstellungen\Admin\Eigene Dateien\xyz\ordner\
cd "ordner"  
Die Anführungszeichen bräuchtest Du in diesem Fall (im Namen des Ordners sind keine Leerzeichen enthalten) nicht, aber sie schaden auch nicht.

nun weiß das Programm aber nich wo es sich befindet.
Bist jetzt "Du" oder das Programm in diesem Ordner?

Den vollständigen Pfad samt Namen der soeben ausgeführten Batchdatei erhältst Du mit "%~f0" (siehe dazu am Ende der Hilfe zu "for", also mit "for /?"; die dort beschriebene "Ersetzung von Verweisen" funktioniert auch mit den Parametern %0 bis %9 einer Batchdatei, wobei eben %0 die Batchdatei selbst angibt).

Da nur Laufwerk und Pfad, nicht aber Name und Extension benötigt werden, wäre der entsprechende Befehl
cd /d "%~dp0ordner"  
bzw, falls Du etwa die Datei "Info.txt" aus dem fraglichen Ordner anzeigen wolltest
type "%~dp0ordner\Info.txt"  

Grüße
bastla
Michi262
Michi262 24.01.2008 um 02:44:08 Uhr
Goto Top

> nun weiß das Programm aber nich
wo es sich befindet.
Bist jetzt "Du" oder das Programm
in diesem Ordner?


Im ersten Pfad liegt das Programm. Und soll num im 2. Pfad was erledigen.

Danke mla. Ich werd das heut Nachmittag mal testen.

MFG Michi262
lowbyte1
lowbyte1 24.01.2008 um 05:29:20 Uhr
Goto Top
helo

cd "ordner"

oder du kannst mit dem pushd befehl der den aktuellen pfad speichert direkt den pfad angeben zudem du springen möchtest und anschlissend kannst du wider mit dem popd befehl zu dem gespeicherten pfad wechseln.

pushd "pfad"

danach wider zurück

popd


lowbyte
Michi262
Michi262 24.01.2008 um 10:05:28 Uhr
Goto Top
ja. das mit pushd und popd hab ich schon versucht.

Also die Bat wird ein Installer.

Es liegt die Bat Datei vor und in einem Unterordner die Daten. die er nach C:\Progreamme\... schieben soll. Allerdings weiß ja das Programm niocht in welchem Pfade es sich gerade befindet und deshlab kann ich die Dasten die im Unterordner liegen nich nach C:\Programme\... verschieben da er Sie nicth findet.

Michi262

PS: Weiß evtl. wer, wie ich es machen muss, das ich wie die Softwarefirmen einen Installer hinbekomme.
Biber
Biber 24.01.2008 um 11:14:08 Uhr
Goto Top
PS: Weiß evtl. wer, wie ich es machen muss, das ich wie die Softwarefirmen einen Installer hinbekomme.
Ein Schritt in diese Richtung wäre, die Antworten auf Deine Fragen auch zu lesen.
Siehe oben bastlas Ausführungen ( cd /d "%~dp0ordner") und wenige Zentimeter tiefer lowbyte1s Ergänzungen (Pushd/PopD).

Wie gesagt, es wäre zumindest ein erster Schritt... könnte sein, dass es noch ein paar Tage dauern wird, bis Du den Softwarefirmen Konkurrenz machen kannst.

Grüße
Biber
Michi262
Michi262 24.01.2008 um 15:17:50 Uhr
Goto Top
Danke an alle.

ich hab das ganze so gelöst:
copy "%cd%\..." "C:\Programme....  

Mit dem Statz "wie die Softwarefirmen" meinte ich das ich das ganze über einen Installer machen möchte. Wie z. B. wenn ich Firefox installiere.

Michi26206
Biber
Biber 25.01.2008 um 13:56:29 Uhr
Goto Top
Moin Michi262,

Deine Lösung
ich hab das ganze so gelöst:
copy "%cd%\..." "C:\Programme....
... möchte ich nur ungern als Lösung so stehen lassen. Ist IMHO Bullshit nicht sonderlich robust.

die dynamische Variable %cd% gibt das aktuelle Verzeichnis an.
Sprich: wenn Du im Verzeichnis "D:\Temp" stehst und vom CMD-Prompt aus den Batch "R:\Setup\Install.bat" aufrufst, dann sind
%cd% == das Aktuelle Verzeichnis == "D:\temp"
%~dp0 im "Install-Bat"-Batch hat den Wert "R:\Setup"

Und Du brauchst m.E. den zweiten Wert.
Wenn Du aus dem Verzeichnis "R:\Setup" den Batch aufrufst, dann stimmen zwar beide Variablen überein, aber in diesem Fall brauchst Du ja gar keine, sondern nur die relative Pfadangabe "..\Parallelverzeichnis\bla.bat"

Grüße
Biber