Nevuor 10 Geschrieben 25. Juli 2011 Melden 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
Robi-Wan 10 Geschrieben 27. Juli 2011 Melden 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
lefg 276 Geschrieben 27. Juli 2011 Melden 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
Robi-Wan 10 Geschrieben 27. Juli 2011 Melden 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
lefg 276 Geschrieben 27. Juli 2011 Melden 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
lefg 276 Geschrieben 27. Juli 2011 Melden Geschrieben 27. Juli 2011 Zum Kontrollieren set Basis=D:\Freigaben\Kunden echo %Basis% pause Zitieren
Nevuor 10 Geschrieben 28. Juli 2011 Autor Melden 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
lefg 276 Geschrieben 28. Juli 2011 Melden 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
Nevuor 10 Geschrieben 28. Juli 2011 Autor Melden 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
lefg 276 Geschrieben 28. Juli 2011 Melden 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
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.