# [BATCH] Aus .bat eine .bat im Unterverzeichnis richtig aufrufen



## RedWraith (5. August 2010)

Hallo !

Es ist mir ein bisschen peinlich, dass zuzugeben, aber ich habe ein Problem mit zwei kleinen Batchskripten.

Ich habe folgende Ordnerstruktur:

```
C:\task\app1\myapp.exe
C:\task\app1\myapp.bat
C:\task\start.bat
```

Die Datei C:\task\start.bat sieht so aus:

```
@echo off
rem app1 starten
call .\app1\myapp.bat
@echo on
```

Die Datei C:\task\app1\myapp.bat sieht so aus:

```
rem starte app1
myapp.exe
```

Wenn ich die myapp.bat aufrufe, funktioniert das auch wunderbar, aber wenn ich die start.bat aufrufe, bekomme ich den Fehler, dass die datei myapp.exe nicht gefunden wurde.

Ich gehe davon aus, dass es daran liegt, dass der Ausführungspfad unterschiedlich ist und die exe deswegen nicht gefunden wird.


```
myapp.bat ausführen:
Ausführungspfad=C:\task\app1\
myapp.exe wird gefunden

start.bat ausführen:
Ausführungspfad=C:\task\
myapp.exe wird nicht gefunden
```

Die Frage ist nun, wie ich myapp.bat in start.bat aufrufen muss, damit in der myapp.bat der richtige 'Ort der Ausführung' angegeben wird ?


----------



## deepthroat (5. August 2010)

Hi.

Man kann das aktuelle Verzeichnis der gerade ausgeführten Batch-Datei folgendermaßen bestimmen:

```
%~dp0
```
Gruß


----------



## RedWraith (5. August 2010)

Hi !

Um oben genannten Fehler zu vermeiden, starte ich die Batches jetzt wie folgt:


```
Start /D %~dp0app1\ /WAIT myapp.bat
```

Das funktioniert wunderbar.


----------



## deepthroat (6. August 2010)

Hi.

Warum so kompiliziert?

Verwende doch in der myapp.bat einfach
	
	
	



```
%~dp0myapp.exe
```
So kannst du die myapp.bat von einem beliebigen Verzeichnis aufrufen.

Oder du könntest in der start.bat einfach das Verzeichnis wechseln:

```
cd /d %~dp0app1
call myapp.bat
```
Gruß


----------

