Zwei Batch Befehle nacheinander ausführen...

  • ich werd mir das script mal nach feierabend (13h+) mal genauer anschauen,
    dann wetd ich mal das kompett neu schreiben und die for schleife auseinander wickeln.


    es würde mir helfen zu wissen wie deine zu verarbeitene ordner strucktur aussehen soll.
    ob das auch einzel aufträge (ohne for schleife) verarbeiten können soll.
    ob du die dateien/ordner auf das script ziehen willst.
    wo das script selbst sich befinden soll...


  • es würde mir helfen zu wissen wie deine zu verarbeitene ordner strucktur aussehen soll.
    ob das auch einzel aufträge (ohne for schleife) verarbeiten können soll.


    Sagen wir mal so, wenn ich meine MKV-Dateien verarbeiten will,
    ziehe ich sie mir auf dem Desktop. Sind meistens 1-30 Ordner.



    ob du die dateien/ordner auf das script ziehen willst.


    Ja genau, ich markiere die Ordner/Dateien und ziehe sie
    auf das Script. Finde ich persönlich am einfachsten.



    wo das script selbst sich befinden soll...


    Das Script befindet sich bei mir auf dem Desktop.

  • ich werde das script so gestellten, dass es überall läuft.
    der beste ort währe ein fester scripte sammel ordner,
    da man auch eine verknüpfung vom script auf dem desktop packen kann...


    [edith:]
    also datei/verzeichnis erkennung läuft schonmal
    und einzeldateien auch.


    ich zerlege gerade die forschleife für die verzeichnisverarbeitung...
    for-schleifen in for-schleifen... spaß... spaß... spaß... :D


  • ich zerlege gerade die forschleife für die verzeichnisverarbeitung...
    ...spaß ...spaß ...spaß ... :D


    Schön zu hören...


    Ich hatte mit dem Script bisher nicht so viel spaß.
    Behelfe mich zur Zeit mit mehreren Batch-Codes
    damit ich ans Ziel komme. Vielleicht haut dein Script
    das ja raus.

  • da habe ich mir etwas zu viel aufgebürgt...
    also das grundgerüst steht.


    es scheitert bei mir bei dem eigentlichen argeitsbefehl.


    [1] sind denn jede datei identisch, das das tonspur löschen funktioniert?


    [2] existtiert zu jeder datei eine untertieteldatei?
    ständig prüfroutienen in eine forschleife einzubauen,
    ohne den überblick zu verlieren...
    allein der gedanke lässt mein hirn schon kochen.


    und dann die frage:
    [3] verarbeitest du jedes verzeichnis einzeln, oder alle auf einmal?
    die antwort steigert zusätzlich die komplexität...


  • sind denn jede datei identisch, das das tonspur löschen funktioniert?


    Ja, an und für sich schon.
    Ich lösche die Tonspuren mit dem Befehl: -a !eng,fre,rus,spa,ita
    Da werden alle Sprachen rausgeworfen die ich nicht brauche, benutze ich auch für Ausländische Untertitel. Hin und wieder kommt es vor das ich Tonspuren habe die keine direkte Language-Kennung haben, sondern wo alle inkl. der Deutschen mit "und" angegeben werden... Meistens haben diese MKV-Dateien aber auch nur zwei Tonspuren. Dann benutze ich den Code -a !2 zum löschen der zweiten Tonspur.



    existtiert zu jeder datei eine untertieteldatei?


    Nicht immer... Falls es zu kompliziert wird, kann man
    diese Option auch erstmal weg lassen. Mir geht es in
    erster Linie nur um das Löschen der anderssprachigen
    Inhalte in der MKV-Datei.



    verarbeitest du jedes verzeichnis einzeln, oder alle auf einmal?
    die antwort steigert zusätzlich die komplexität...


    Kommt drauf an wie viele Dateien/Verzeichnisse ich habe... Aber im
    Grunde markiere ich die Verzeichnisse- schiebe sie auf das Script
    und lasse sie abarbeiten.



    oder hat sich da noch was geändert?


    Du musst dich da nicht so reinsteigern... Möchte nicht, dass dein Kopf durchbrennt :nein:
    Wie gesagt, das Löschen der anderssprachigen Inhalte und das verarbeiten von Dateien
    in Ordnern wäre eine große Zeitersparnis. Die Funktion Untertitel zu integrieren kann außen
    vor gelassen werden... Kommt zum Glück nicht so häufig vor.

  • ich lese mir den ganzen beitrag hier nochmal duch... O.o


    ---


    ich geh mal davon aus, das in beitag #8
    https://forum.gleitz.info/showthread.php?47915#post459224


    der funktionierende scriptcode ist, der für einzelne dateien funktioniert.
    diesen werde ich (weitesgehend) unverändert übernehmen...


    oder hat sich da noch was geändert?


    ---


    mehrere verzeichnisse kann man machen, aber die cmd-konsole bzw.
    das cmd-scriptsystem hat ein zeichenlimit.
    zwar von ein paar tausend zeichen,
    aber das vervielfältigt sich schnell mit multiplen verzeichnissen...


    egal das baue ich zum schluss ein...

  • zwischenergebnis:


    - einzeldatei übergabe funktioniert,
    dank codeisolierung und call-aufruf


    - ich muss jezt erstmal eine forschleife basteln,
    welche nur das verzeichnis indexiert und quasi jede datei
    per call befehl an den codeblock schickt


    irgendwie ist bei mir die luft rauß
    ich durchwühle alte scripte, aber ich blick nicht mehr durch.


    vielleicht kann sich ja mal bitte sneaker2 nochmal zu wort melden.


    ich sitz hier seit ~13:00
    als ich gegen ~17:00 fest stellte,
    dass ich den falschen codeblock verwendet habe
    und ich das script nochmal neu schreiben konnte.


    deswegen habe ich den eigendlichen code erstmal unverändert übernommen.
    wenn das script erstmal läuft, dann kann man versuchen den codblock/die forschleife zu zerlegen...



    nicht funktionsfähig für verzeichnisse!



    SingleDropExecuter.cmd

    Code
    1. ~script gelöscht~


    fertiges script ist hier zu finden:
    https://forum.gleitz.info/showthread.php?47915#post459368

  • HQ-LQ


    So viel Code in einem Script, da wären mir schon längst die
    Finger abgefault... Davon abgesehen, hätte ich es soweit eh
    nicht hinbekommen. Super arbeit! Der Knackpunkt ist immer
    noch das verarbeiten von Verzeichnissen...



    wenn man einstellungen aus einer externen text datei nachladen will
    for /F "tokens=1* delims==" %%a in ('findstr /b "!%xPf%e01!cmd" "%xCfg%"') do call %RunDef% %%b


    das passiert, wenn man variablen mit variabel teilen zusammensetzen will
    !%xPf%e01!cmd"


    Ich habe keine Ahnung was du meinst :grübeln:


    Aber klingt vielversprechend... Wenn es zum Erfolg bringt
    und das Thema mit dem Verzeichnissen löst. Warum nicht.

  • [edit]
    for /F "tokens=1* delims==" %%a in ('findstr /b "!%xPf%e01!cmd" "%xCfg%"') do call %RunDef% %%b
    !%xPf%e01!cmd"


    das waren nur beispiel codes um zu zeigen,
    welch wirre geganken, dann doch noch zu ergebnissen führen


    dieser code hat nichts hier beigetragen...
    eigendlich doch,
    for /F "tokens=1* delims==" %%a in (
    hat mir dann schon geholfen


    aber zurlaufzeit dynamischgenerierte verschachtelte variablen hat das script leider nicht... XD
    [/edit]



    ich habs ja optisch getrennt,
    letzendlich sind das auch nur codeschnipsel,
    welche ich lauffähiggemacht habe, bzw. optisch "ansehnlicher"...


    du bist garnicht so weit weg von mir,
    man bräuchte halt nur etwas geduld und langeweile... ^^


    obwohl ich schon so einiges lustiges/sinnloses mit der windows batch angestellt habe...
    aber es ist wichtig zu wissen dass es geht!


    z.b. %variablen% in %var%variablen%iablen%,
    bzw. zurlaufzeit dynamischgenerierte variablen
    keine ahnung mehr für was ich das gebraucht hatte,
    ich kann den code nicht mehr finden...
    es war jedenfalls augenkrebs... XD


    ---


    edit:


    gefunden!


    wenn man einstellungen aus einer externen text datei nachladen will
    for /F "tokens=1* delims==" %%a in ('findstr /b "!%xPf%e01!cmd" "%xCfg%"') do call %RunDef% %%b


    das passiert, wenn man variablen mit variabel teilen zusammensetzen will
    !%xPf%e01!cmd"


    die urfassung war, glaube ich mit mehrfachen doppelten %% prozentzeichen realisiert
    und immer wieder von einer variablen, zur nächsten geschrieben... SPAß! :D


    das hatte ich mal in mein packer-battle-script eingebaut... RIP

  • done.


    SingleDropExecuter.cmd


    Code
    1. ~script gelöscht~


    fertiges script ist hier zu finden:
    https://forum.gleitz.info/showthread.php?47915#post459368


    -


    multi-drop ünterstüzt das script nicht,
    aber wenn du alles in ein sammel-unterordner packst,
    dann wird es auch so funktionieren.


    was für problem könne multidrop verursachen:
    1# ich müsste eine liste vom imput generieren
    2# dann müsste ich prüfen, ob jeder input eine datei oder ein verzeichnis ist
    - ich kann nicht davon ausgehen, das der endnutzer vernünftig ist oder sich an regeln hält... ;)
    - und zwar im for/call format, also eine zusätzliche verschachtelung



    ab ins archiv damit...
    gute nacht...

  • zum thema langeweile... :P


    ich präsentiere: "MDeX" der MultiDropExecuter
    geprüft und getestet


    egal was verfüttert wird,
    er frisst alles:
    - einzel datei oder verzeichnis
    - multi datei oder verzeichnisse
    - mischbetrieb von datei oder verzeichnissen


    schön geblockt,
    so das man sein arbeitsscript einfacher einfügen kann


    sneaker2 mkvmerge-script habe ich optisch so eingeschoben,
    dass man sieht das es "nur" eine verschachtelte if/else-routine ist


    ich habe noch eine SET variable eingebaut,
    um die löschroutiene ein/aus zu schalten


    diese ist auskommentiert, also löscht das script z.z. gnadenlos!


    ab ins archiv damit...



    übrigens:
    so komplex ist das teil überhaupt nicht,
    ich habe nur 2 forschleifen
    und mein verzeichnis/datei prüfung eingebaut,
    welches im kern aus 5 zeilen besteht, oder so.


    das goto/call gerüst ist auch nicht die welt.


    nur das jemand mal daraus ne vorlage mal bastelt... bitte schön.


    übrigens es hat auch ein call block für externe scripte,
    kann ja mal jemand testen ob die übergabe fehlerfrei funktioniert


    wenn du dich wunderst warum da so viele :: drin sind
    :BLUBB sind sprungmarken, diese verarbeitet das script schneller,
    als der befehl REM.
    und da nicht versehendlich die kommentare als sprungpunkt interpretiert werden, mache ich 2 drauß
    optisch trennen sich sie :: besser ab als ein rem



    MDeX_by.HQ-LQ.cmd


    @ sneaker2


    sind in deinem script diese codezeilen nötig?
    es wird ja nur eine datei übergeben
    und dann ist das script abgeschlossen...

    Code
    1. [I]:loop
    2. shift
    3. if not "%~1"=="" goto :loop[/I]


    [edit:]
    habe diese entfernt...

  • HQ-LQ

    Ich kann dein Script gerade nicht testen. Sieht aber schon beeindruckend
    aus was du da zusammengeschustert hast. Da bin ich mal gespannt... Melde
    mich in eins zwei Stunden noch mal.


    Edit:


    So, Test beendet... Script funktioniert astrein :rock:


    Anderes Thema, die integrierten Untertitel werden
    ja standardmäßig aktiviert... Das macht für mich
    eigentlich nur Sinn wenn es sich um Forced-Subs
    handelt. Wie könnte man das im Script deaktivieren?


    Habe hier was im Englischen Forum gefunden wie man
    die Untertitel deaktivieren kann... Leider bekomme ich
    den Befehl nicht ins Script eingefügt, so das er funktioniert.


    Ich bin mir auch nicht sicher ob der Befehl der richtige ist.


    Zitat


    Note that the above commands for adding subtitles also set the subtitles as “enabled by default” when playing the file. (This flag can be confirmed using the MKVMerge GUI.) To avoid this, use --default-track '0:0'.

  • ein tip,
    mkvmerge ist ein kommandozeilen-programm


    öffne mal die kommandozeile (CMD)
    geh ins C:\Programme\MKVToolNix verzeichnis


    und gebe ein:
    mkvmerge /?
    da siehst du erstmal die möglichkeiten


    online sollte der spaß offizell dokumentiert sein.


    übrigens gilt für die meisten programme diese hilfeschalter:
    app.exe /? /h -h --help


    -


    eine hilfe füe cmd-spaßfögel wie mich sind GUI-programme,
    welche dir die cmd-zeile mit anzeigen:


    das tut übrigens "mkvtoolnix-gui.exe" auch:
    im menü: "Multiplexer\Befehlszeile anzeigen"


    so ist man in der lage seine eigene befehlzzeile zu generieren
    und dann modifiziert in das script einbauen...


    das habe ich schon mit MeGUI genacht, um x264-profiele zu generieren.

  • Habe es hinbekommen... War leichter als erwartet, aber wenn man kein Plan ist alles schwer :/


    Code
    1. :loop
    2. if exist "%~n1.srt" ("%mkvmerge%" -o "neu\%~n1.mkv" -a !eng,fre,rus,spa,ita %1 --language 0:ger --default-track 0:no "%~n1.srt" && %DelOff% del %1 "%~n1.srt"
    3. ) else if exist "%~n1.idx" ("%mkvmerge%" -o "neu\%~n1.mkv" -a !eng,fre,rus,spa,ita %1 --language 0:ger --default-track 0:no "%~n1.idx" && %DelOff% del %1 "%~n1.idx" "%~n1.sub"
    4. ) else ("%mkvmerge%" -o "neu\%~n1.mkv" -a !eng,fre,rus,spa,ita -s !eng,fre,rus,spa,ita %1 && %DelOff% del %1
    5. )
    6. shift
    7. if not "%~1"=="" goto :loop
    8. goto :eof
  • danke,
    gut ich werde diese zeilen entfernen,
    da die for-schleifen zur aufarbeitung der dateilisten zuständig sind.


    @ Neugier
    wie ich sehe, hast du die TAB-taste noch nicht für dich entdeckt... :D


    -


    habe gerade festgestellt, das die variable %DelOff% falsch ist,
    sie müsste %qDelOff% heißen,
    so funktioniert der das umschalten via auskommentieren nicht und löscht immer noch die dateien.


    habe es oben korrigiert


    -


    gibt es eigendlich eine möglichkeit den papierkorb zu nutzen?
    also ohne ein vbs/fremd-script zu erzeugen.


    powershell kann man zwar via kommandozeile aufrufen,
    sollte aber erstmal nur zweite wahl sein.

  • oder man müsste die SID herausfinden und die dateien direkt hineinkopieren,
    aber das wird sich wohl nicht vertragen,
    da die dateinamen verfremdet sind.
    also muss es irgendwo noch ein index geben...


    also doch powershell oder VBS?
    die kann ich wenigsten in ein batch-script einbaun...


    können diese das überhaubt?


    [edit:]
    jupp können sie,
    aber auch powershell nutzt nur VBS,
    da kann man gleich ein VBS script nehmen...