Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
hi, ich habe eine batch wo ich eine Quelle als variable nutze. Jetzt möchte ich in diese Quelle als Pfadangabe: Aktueller Pfad -> aber 2 Pfade höher gehen. Und dann wieder tiefer. Es soll aber relativ sein. Geht das?
„..“ ist wenn man so will ein Link auf den übergeordnete Ordner welcher in jedem Ordner enthalten ist. Wenn du einem Befehl einem Pfad mit „\..“ am Ende übergibst dann wird es wie der übergeordnete Pfad behandelt.
Folgender Befehl wechselt in den übergeordneten Ordner „D:\“
Die Sache mit diesen relativen Pfaden in einer Batch Datei ist aber auch etwas mit vorsicht zu genießen.
machst du zB folgenden Code in eine Batch Datei:
Code:
cd ..
dir
macht es sehr wohl einen Unterschied von wo aus du diese Batch aufrufst. Macht du via Windows Explorer & Doppelklick auf die Batch, dann befindest du dich im aktuellen Verzeichnis wo die Batch Datei liegt.
Führst du die Batch Datei aus der CMD aus und befindest dich da grade in einem anderen Verzeichnis, kannst du die Batch zwar aufrufen, aber die Ausgabe geht dann eben vom aktuellen Verzeichnis aus, wo du drin bist, und wird dir eine andere Ausgabe geben.
Funktioniert bei mir. (Inhalt von Ordner1 ist in Temp)
Vielleicht ein Problem der Variableninterpretation. Was passiert, wenn du %~dp0 explizit in eine Variable setzt und diese dann im Pfad?
ECHO zeigt es so an, weil das korrekt ist. Es überrascht mich eher, dass ein Konstrukt wie %~dp0..\.. mit DIR, XCOPY usw. funktioniert. Wieder etwas neues gelernt.
Wenn du testen möchtest ob die Variable wie gewünscht funktioniert, dann muss du es mit DIR oder so testen.
Aber ich verstehe nun nicht, was das Problem ist. Ich habe es gerade getestet: Verschiedene Verzeichnisse bis zu 3. Unterebene erzeugt ("E:\Test1\Test2\Test3" und "E:\Test1\Test4). In "Test3" liegt die Batch und 3 Text-Dateien. Mit der Batch werden die Text-Dateien erfolgreich zu "E:\Test1\Test4" kopiert.
Code:
@ECHO OFF
SET Ziel=%~dp0..\..\Test4
ECHO Vor dem Kopieren:
ECHO.
TREE /F E:\Test1
ECHO.
ECHO --------------------------------------------------------------
ECHO.
ECHO Kopiere Dateien.
ECHO.
XCOPY *.txt "%Ziel%\"
ECHO.
ECHO --------------------------------------------------------------
ECHO.
ECHO Nach dem Kopieren:
ECHO.
TREE /F E:\Test1
ECHO.
PAUSE
Wo scheitert es nun bei dir? Oder hast du wieder die Hälfte verheimlicht, weil das Problem ganz woanders liegt bzw. umfangreicher ist?
@o0Julia0o
Hab ich doch in meiner Beispiel-Batch gemacht. "%~dp0" = Ort der Batch und von dort aus 2 Verzeichnisebenen höher und dann wieder eine Ebene tiefer. Ohne "%~dp0" funktioniert es ebenfalls.
Es fehlt hier einfach an Grundlagenkenntnissen. Sollte man mal lesen und lernen, wenn man selbst Skripte nutzen/schreiben möchte.
Die Pfade "D:\Test\Ordnertiefe2\.." und "D:\Test" sind identisch, "D:\Test\" und "D:\Test\Ordnertiefe2\..\" ebenso.
Die Strings sind logscherweise nicht identisch, die Pfade schon.
Wenn man unbedingt den String "D:\Test" haben möchte, dann kann man einfach in das Verzeichnis wechseln und mit set pfad=%cd% (%cd% ist das batch equivalent von pwd) den kurzen String holen.
Das soll wirklich nicht böse klingen, aber wer tatsächlich 2 Jahre lang an sowas scheitert, der sollte überlegen, ob Scripting nicht eher was für andere ist.