Nevuor 10 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 Guten tag, wie der Name schon sagt würde ich gern mit einer Batch mehrere andere Batch Datein aufrufen. for /f "tokens=*" %%a in ('dir /b /ad B_*') do (xcopy /e /i /q /y "%%a" Belege\Baustelle\%%a && rd /s /q "%%a") for /f "tokens=*" %%a in ('dir /b /ad R_*') do (xcopy /e /i /q /y "%%a" Belege\Reperatur\%%a && rd /s /q "%%a") Diese Batch Datei soll aufgerufen werden. Sie liegt in jedem Kundenordner unter "D:\Freigaben\Kunden\KUNDENAME", wobei der jeweilige Kundenordner natürlich für jeden Kunden unterschiedlich ist. Bisher habe ich: set "Basis=D:\Freigaben\Kunden" for /d %%i in ("%Basis%\*") do if exist "%%i\Belege.bat" call "%%i\Belege.bat" Diese Batch Datei liegt unter "D:\Scripte\Call Belege.bat". Leider führt die Datei die Batch Datei nicht aus. Vermutlich wird durch das aufrufen durch die erste Batchdatei ein falscher Scriptpath in die aufzurufende Batch übernommen, oder so? Habt ihr ne Idee wie man das hinbekommen kann? Vielen Dank im Voraus. Zitieren Link zu diesem Kommentar
Nevuor 10 Geschrieben 27. Juli 2011 Autor Melden Teilen Geschrieben 27. Juli 2011 *up* *liebguck* Zitieren Link zu diesem Kommentar
Robi-Wan 10 Geschrieben 27. Juli 2011 Melden Teilen Geschrieben 27. Juli 2011 Hallo, auf den ersten Blick stören mich die Anführungszeichen nach dem set Befehl. Nimm die doch mal raus. Grüße, Robert Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. Juli 2011 Melden Teilen Geschrieben 27. Juli 2011 Genau, der Variablen Basis soll zugewiesen der Wert D:\Freigaben\Kunden In Anführungzeichen setzen "D:\Freigaben\Kunden" für den Fall, das darin ein Leerzeichen. Zitieren Link zu diesem Kommentar
Robi-Wan 10 Geschrieben 27. Juli 2011 Melden Teilen Geschrieben 27. Juli 2011 Genau, der Variablen Basis soll zugewiesen der Wert D:\Freigaben\Kunden In Anführungzeichen setzen "D:\Freigaben\Kunden" für den Fall, das darin ein Leerzeichen. Da in dem Pfad keine Leerzeichen drinne sind, wollte ich ganz darauf verzichten ;) Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. Juli 2011 Melden Teilen Geschrieben 27. Juli 2011 Off-Topic:Ich habe es erst gesehen nach deinem Hinweis. Der OT wir das mit den Anführungszeichen mal irgendwo gesehen haben, etwas anders aber. :) Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 27. Juli 2011 Melden Teilen Geschrieben 27. Juli 2011 Zum Kontrollieren set Basis=D:\Freigaben\Kunden echo %Basis% pause Zitieren Link zu diesem Kommentar
Nevuor 10 Geschrieben 28. Juli 2011 Autor Melden Teilen Geschrieben 28. Juli 2011 (bearbeitet) set Basis=D:\Freigaben\Kunden echo %Basis% Er spuckt mit den korrekten Pfad aus. Das ist kein Problem. Das Problem besteht darin, dass wenn diese Batch Datei die Datei "Belege.bat" aufruft, dann wird der Befehl dieser Batch Datei: for /f "tokens=*" %%a in ('dir /b /ad B_*') do (xcopy /e /i /q /y "%%a" Belege\Baustelle\%%a && rd /s /q "%%a") for /f "tokens=*" %%a in ('dir /b /ad R_*') do (xcopy /e /i /q /y "%%a" Belege\Reperatur\%%a && rd /s /q "%%a") leider nicht in dem richtigen Verzeichnis ausgeführt. "D:\Freigaben\Kunden\Kundenname\Belege.bat" <--- hier liegt die "Belege.bat" und hier soll sie auch ausgeführt werden. Wenn ich diese Batch in dem ordner selbst ausführe, dann klappt alles, wenn ich sie über eine andere batch aufrufe wie oben beschrieben, dann geht es nicht. *** Zusatz: Was das Script eigentlich machen muss: 1. im Basispfad den ersten ordner suchen und reingehen 2. die Batch Datei in dem ordner ausführen 3. das Verzeichnis wieder in eine Ebene höher wechseln (cd..) 4. In das nächste Verzeichnis wechseln und die Schritte erneut ausführen Sequentuell für einen Odner geht es... wie verpacke ich das in eine Schleife? bearbeitet 28. Juli 2011 von Nevuor Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. Juli 2011 Melden Teilen Geschrieben 28. Juli 2011 Hallo, wie wäre es, das Ausführen im gewünschenten Pfad zu erzwingen, den Pfad dem Ausführen voranstellen oder dorthin zu navigieren mit cd? Weiter, ist es zwingend notwendig, aus einer Batch heraus weitere Batches aufzurufen? Jetzt ist mir etwas aufgefallen: for /d %%i in ("%Basis%\*") do if exist "%%i\Belege.bat" call "%%i\Belege.bat" Befindet sich denn die Belege.bat innerhalb des Pfades %%i, machte das denn Sinn? Wurde der Ablauf denn mal verfolgt, mit Pause angehalten? Zitieren Link zu diesem Kommentar
Nevuor 10 Geschrieben 28. Juli 2011 Autor Melden Teilen Geschrieben 28. Juli 2011 So... erstmal vielen Dank für die Hilfe. Habe es grade allein mit einem Kollegen hinbekommen. ... wusste garnicht, dass UND-Verknüpfungen in einer Batch gehen. ;) Das Ergebnis ist simpel, aber funktioniert. @ECHO off set "Basis=D:\Freigaben\Kunden" for /d %%i in ("%Basis%\*") do cd "%%i" & call "%%i\Belege.bat" & cd.. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. Juli 2011 Melden Teilen Geschrieben 28. Juli 2011 Wunnerbar, danke für das Replay, enen schönen Tag noch. :) Übrigens, mit Call ist ein Aufruf von Subroutines innerhalb einer Batch möglich, oft unnötig der Aufruf einer anderen Batch. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.