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 Zitieren
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 Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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 Zitieren
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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.