YAMBi Geschrieben 4. Juli 2014 Geschrieben 4. Juli 2014 Hallo, ich habe mir eine Batchdatei gebastelt mit der ich mittels MKVMerge Videos ummuxen lasse. Die Dateien liegen alle schön nummeriert im gleiche Ordner wie die Batch. Jede Zeile in der Batch beinhaltet also einen um 1 höheren Wert als die vorherige Zeile, z. B. 01.mkv -> 02.mkv usw. Ist es irgendwie möglich, dass man diese Werte automatisch je Zeile um 1 erhöht? Ich würde über der Zeile z. B. per 'Set' einen Wert setzen der dann an einer bestimmten Stelle in den Zeilen eingefügt und je Zeile um 1 erhöht wird? Gebe ich dort "0" ein steht in der 1. Zeile "01", in der 2. Zeile "02" usw. Trage ich dort 10 ein, steht in der 1. Zeile "11" und in der 2. Zeile "12". Geht das zu machen? Yambi
sas86ks Geschrieben 7. Juli 2014 Geschrieben 7. Juli 2014 Warum iterierst du nicht einfach über alle Dateien in dem Folder, wo dein Batch Script liegt? Siehe: build automation - How to do something to each file in a directory with a batch script - Stack Overflow
YAMBi Geschrieben 8. Juli 2014 Autor Geschrieben 8. Juli 2014 Ich hab vielleicht nicht genau beschrieben was ich will: Die Inputdateien heißen immer gleich. Es handelt sich um Serienepisoden die umgerechnet werden. Jede Episode bzw. deren Streams hat eine Nummer. Das Output variiert aber, da auf Disk 1 z. B. Folgen 1 - 9 liegen wird auch als Output 00.mp4 bis 09.mp4 ausgegeben. Bei Disk 2 beginnt der Input wieder bei 00, der Ouput aber geht weiter bei z. B. 10.mp4 usw. Ich will jetzt die Outputnamen möglichst einfach erhöhen, z. B. indem ich oben in der Datei einen Wert "00" setze und dann bei Output 1 steht "00+1". Tragen ich oben "09" ein erhalte ich Output "09+1", also 10. Den Rest könnte ich mit einer For-Schleife machen, damit habe ich aber keine Erfahrungen und wäre auch zu kompliziert. Der Input ist aber nicht das Problem.
sas86ks Geschrieben 9. Juli 2014 Geschrieben 9. Juli 2014 Dein Problem liegt also darin, die Zahl aus dem Dateinamen zu extrahieren und dann um 1 zu inkrementieren?
YAMBi Geschrieben 9. Juli 2014 Autor Geschrieben 9. Juli 2014 aus dateinamen muss nichts rausgeholt werden. ich gebe den dateinamen an und er soll um einem wert erhöht werden. zeile 1 um 1, zeile 2 um 2 usw. den "basiswert" könnte man oben per 'set' setzen Gesendet von meinem GT-I9100 mit Tapatalk
Crash2001 Geschrieben 9. Juli 2014 Geschrieben 9. Juli 2014 (bearbeitet) Innerhalb einer Bat-Datei sollte das eigentlich kein Problem sein. Den entsprechenden Start-Wert könntest du auch als Variable an die .bat-Datei übergeben. Mal als kleines Beispiel eine Bat-Datei, die eine Übergabe erwartet als Startwert und hochzählt. @echo off if defined %1 goto mit_startwert goto ohne_startwert :mit_startwert set variable=%1 echo %variable% set /a variable=%variable%+1 echo %variable% goto ende :ohne_startwert set /a variable=0 echo %variable% set /a variable+=1 echo %variable% goto ende :ende echo "Ende" pause Könnte man natürlich auch in eine "goto-Schleife" mit if-Anweisung reinpacken, um weniger schreiben zu müssen eventuell. Einen zweiten Übergabewert könnte man mit %2, einen dritten mit %3 abgreifen. Bearbeitet 9. Juli 2014 von Crash2001
YAMBi Geschrieben 9. Juli 2014 Autor Geschrieben 9. Juli 2014 Ist nicht ganz das was ich suche, du denkst vermutlich etwas zu kompliziert. Ich hab mal etwas nach den set Kommando gesucht und es so halbwegs hinbekommen set n=0 set /a n1=%n%+1 set /a n1=%n%+2 program input output%n1% program input output%n2% Jetzt wird Zeile 1 als output1, Zeile 2 als output2 usw. ausgegeben. Will ich, dass Zeile 1 output8 und Zeile 2 output9 ausgibt ändere ich einfach 'set n=0' in 'set n=7'. Problem ist aber noch, dass ich einstellige Zahlen nicht als 1 sondern als 01 ausgeben will. Mit n=00 geht das aber nicht. Ich könnte 'output%n1% durch output0%n1% ersetzen, dann bekomme ich aber Probleme wenn es über 10 geht, denn dann erhalte ich statt ouput10 ein output010.
Crash2001 Geschrieben 10. Juli 2014 Geschrieben 10. Juli 2014 Naja, bei den von dir gegebenen Infos ist es nicht gerade einfach nachzuvollziehen, wie das in der .bat-Datei dann aussieht... Du könntest einfach überprüfen, ob der Ausgabewert < 10 ist und davon abhängig halt dann die führende Null ausgeben oder nicht. Ob das nun mit Sprungmarke gemacht wird, oder ob du eine andere Variable ausgibst, in der du entweder die führende Null hinzufügst oder nicht, ist dann deiner Kreativität überlassen. Genauso, ob du eine "Schleife" baust mit Sprungmarken, oder ob du es als "Spaghetticode" haben willst.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden