Probleme bei Aufruf von Batch-Datei per Batch-Datei

  • Morgen zusammen,

    ich lasse meine Filme und Sat-Aufnahmen oftmals über Nacht kodieren, da der Rechner danneh nicht gebraucht wird. Oftmals ist es aber so, dass ich verschiedene Batch-Dateien benötige, z.B. wenn einen Film croppen muss, oder manche mit mp2 als Audiospur dabei sind usw. Oftmals ist es auch so, dass diese in verschiedenen Ordner liegen. Daher hab ich mich mal schlau gemacht, wie ich über eine Sammel-Batchdatei die anderen Batch-Dateien aufrufen kann. Bis jetzt habe ich das so gemacht:

    Code
    call "E:\Ordner\Batch-Kodieren.bat"
    
    
    call "E:\Ordner\Batch-Kodieren.bat"
    
    
    call "E:\Ordner\Batch-Kodieren.bat"
    
    
    pause

    Wenni ch das aber so aufrufe, sucht das Script in dem Ordner, in dem die Sammel-Batch liegt, nach Files zum kodieren. Wenn ich jetzt die Sammel-Batch in den ersten Ordner lege, der kodiert werden sollte, würde diese so die Files dort drei Mal kodieren.

    Wie kann ich es erreichen, dass die jeweils aufgerufene Batch eben im jeweligen Ordner operiert?

    Ich hoffe ich konnte das Problem etwas verständlich machen...


    Danke schon mal

    Lapje

  • Versuch mal in der gecallten batch Datei zuerst mit pushd "%~dp0" ins Arbeitsverzeichnis zu wechseln.

    %~dp0 zeigt auf das Verzeichnis in dem die aktuelle batch Datei existiert, siehe hier.

    MP4.tool - GUI für Mp4Box und L-Smash
    BeHappy [ 1 ][ 2 ]- AviSynth basierter Audiokonverter mit DSP- und Encoder-Plugins
    PGFEnc - PGF (ProgressiveGraphicsFile) und WebP Encoder und Decoder

  • Versuche dich bei Deiner Namenswahl mal auf die alten Dos-Namenskonventionen zu beschränken.
    - Max. 8 Zeichen plus Endung
    - keine Sonderzeichen
    - Vermeide Groß-/Kleinschreibung

    "E:\ordner\batch.bat" wäre also ok.

    Grüße Thomas

  • Was spricht dagegen, die Dateien mit ihren absoluten Namen anzusprechen? Dann ist es doch egal, von wo aus das Script aufgerufen wird...

    G

  • Danke erst mal, werde ich ausprobieren.

    MediumRare
    Was meinst Du mit einem absoluten Namen? Von den Batch-Dateien? Das spielt ja keine Rolle. Nehmen wir mal an, die Sammel-Batch liegt im Ordner "TV", dann drei Unter-Ordner mit den Sendungen. Die Sammel-Batch würde zwar die jeweligen Batchs aufrufen, aber diese suchen dann im Ordner "TV" nach den zu kodierenden Dateien.

    Oder meinst Du etwas anderes?

  • Ohne Gewähr, evtl. ist die Syntax leicht anders, aber mit FOR-Schleife über alle Unterverzeichnisse sollte einiges machbar sein, auch das Ausführen einer Kommandosequenz in einer Klammer:

    Code
    FOR /D %%a IN (*.*) DO (	CD "%%a"	CALL Batch-Kodieren.bat	CD ..)

    Oder füge den Befehl von #2 in jede der aufgerufenen Batchdateien ein, dann wird das aktuelle Verzeichnis zu dem, in welchem die aufgerufene Batchdatei sich befindet. Dann geht die FOR-Schleife auch kürzer:

    Code
    FOR /D %%a IN (*.*) DO CALL Batch-Kodieren.bat

    MediumRare meinte, weitgehend "voll qualifizierte Dateinamen" (mit Laufwerk und Pfad) überall zu verwenden. Dann ist das aktuelle Arbeitsverzeichnis egal, es wird der Name jeder Datei an ihrem absoluten Platz übergeben, nicht nur relativ zum aktuellen Verzeichnis.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!