2 Forschleifen hintereinander
2 Forschleifen hintereinander
Hallo ich bin gerade dabei eine batch zu schreiben wo ich 2 for schleifen hintereinander brauche
im normalen soll es so aussehen
string out="programm.exe new.mp4"
for(i=6;i<=18;i++) für Stunden
{
for(j=0;j<=59;j++)für Minuten
{
if(j<10)
j="0"+j;
out=out+" -cat \\server\freigabe\tag\"+i +"\video"+j+".mp4";
}
}
nachher
echo out > newjob.bat
oder die out Variable direkt ausführen.
mein code ist der zeit so
leider funktioiert das nicht
Hallo ich bin gerade dabei eine batch zu schreiben wo ich 2 for schleifen hintereinander brauche
im normalen soll es so aussehen
string out="programm.exe new.mp4"
for(i=6;i<=18;i++) für Stunden
{
for(j=0;j<=59;j++)für Minuten
{
if(j<10)
j="0"+j;
out=out+" -cat \\server\freigabe\tag\"+i +"\video"+j+".mp4";
}
}
nachher
echo out > newjob.bat
oder die out Variable direkt ausführen.
mein code ist der zeit so
set out ="mp4box.exe day.mp4"
for /L %%i in (6 1 18) do for %%j in (0 1 59) do if %%j <10 do %%j=0+%%j %out%=%out%+" - cat ftp://server/share/201000406/"+%%i"/video"+%%j+".mp4"
echo %out% >newjob.bat
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 140027
Url: https://administrator.de/forum/2-forschleifen-hintereinander-140027.html
Ausgedruckt am: 21.05.2025 um 09:05 Uhr
11 Kommentare
Neuester Kommentar
Hallo @Dipps,
ungetestet aber korrigiert
set out="mp4box.exe day.mp4"
for /L %%i in (6,1,18) do (
for /L %%j in (0,1,59) do (
if /I %%j GTR 10 (
set /a j=0+%%j
set out="%out% cat ftp://server/share/201000406/%%i/video%%j.mp4"
echo %out%>>newjob.bat
)
)
)
ungetestet aber korrigiert
Moin Dipps,
wenn ich dich richtig verstanden haben sollte, dann müssten die beiden Zählschleifen wie folgt aufgebaut sein.
Beispiel am CMD-Prompt:
Die einzugebende Zeile ist die erste, das ">" nicht mit eingeben, das ist mein Prompt.
Im Batch dann wieder zwei Prozentzeichen vor den Laufvariablen; alles verteilen auf ein paar Zeilen mehr und natürlich statt des proof-of-concept-Blas wieder den ganzen "ftp.//"-Zirkus.
Die Skizze soll nur das Schleifenkonstrukt zeigen.
Grüße
Biber
wenn ich dich richtig verstanden haben sollte, dann müssten die beiden Zählschleifen wie folgt aufgebaut sein.
Beispiel am CMD-Prompt:
>for /L %i in (6 1 18) do @for /L %j in (0 1 59) do @if %j LSS 10 @(echo [bla]\%i\video0%j.mp4) else @echo [bla]\%i\video%j.mp4
[bla]\6\video00.mp4
[bla]\6\video01.mp4
[bla]\6\video02.mp4
[bla]\6\video03.mp4
[bla]\6\video04.mp4
[bla]\6\video05.mp4
[bla]\6\video06.mp4
[bla]\6\video07.mp4
[bla]\6\video08.mp4
[bla]\6\video09.mp4
[bla]\6\video10.mp4
....
[bla]\18\video54.mp4
[bla]\18\video55.mp4
[bla]\18\video56.mp4
[bla]\18\video57.mp4
[bla]\18\video58.mp4
[bla]\18\video59.mp4
Die einzugebende Zeile ist die erste, das ">" nicht mit eingeben, das ist mein Prompt.
Im Batch dann wieder zwei Prozentzeichen vor den Laufvariablen; alles verteilen auf ein paar Zeilen mehr und natürlich statt des proof-of-concept-Blas wieder den ganzen "ftp.//"-Zirkus.
Die Skizze soll nur das Schleifenkonstrukt zeigen.
Grüße
Biber
setlocal enabledelayedexpansion
for /L %%i in (6,1,18) do (
for /L %%j in (0,1,59) do (
if /I %%j GTR 10 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video%%j.mp4>>newjob.bat
)
)
)
wenn ich über doe
%out%
gehen wollte, bekam ich letztendlich immer nur einen leeren String bzw. das Startvalue. egal ob mit oder ohne delayedExpansion..Greetz
Snow
Zitat von @Dipps:
Danke das funktioiert so weit super nun habe ich festgestellt das i auch noch eine 0 brauch wenn es kleiner 10 ist wie kann ich
das den dann noch machen?
Danke das funktioiert so weit super nun habe ich festgestellt das i auch noch eine 0 brauch wenn es kleiner 10 ist wie kann ich
das den dann noch machen?
quick'n 'dirty:
setlocal enabledelayedexpansion
for /L %%i in (6,1,18) do (
for /L %%j in (0,1,59) do (
if /I %%j GTR 10 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video%%j.mp4>>newjob.bat
)
if /I %%j EQU 0 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video%%j.mp4>>newjob.bat
)
)
)
ach das sollte dein eigenartiges Konstrukt im Startpost sein...
Auszug:
passt so?
setlocal enabledelayedexpansion
for /L %%i in (6,1,18) do (
for /L %%j in (0,1,59) do (
if /I %%j GTR 10 (
if /I %%i LSS 10 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/0%%i/video%%j.mp4>>newjob.bat
) else (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video%%j.mp4>>newjob.bat
)
)
)
)
Auszug:
mp4box.exe day.mp4 cat ftp://server/share/201000406/09/video57.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/09/video58.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/09/video59.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video11.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video12.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video13.mp4
so, jetzt aber endgültig:
Auszug:
greetz
Snow
gibts eigentlich keine bessere Variante, Überwachungsvideos oder ähnliches zu übertragen??
@Echo off
setlocal enabledelayedexpansion
for /L %%i in (6,1,18) do (
for /L %%j in (0,1,59) do (
if /I %%j GEQ 10 (
if /I %%i LSS 10 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/0%%i/video%%j.mp4>>newjob.bat
) else (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video%%j.mp4>>newjob.bat
)
) else (
if /I %%i LSS 10 (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/0%%i/video0%%j.mp4>>newjob.bat
) else (
echo mp4box.exe day.mp4 cat ftp://server/share/201000406/%%i/video0%%j.mp4>>newjob.bat
)
)
)
)
Auszug:
mp4box.exe day.mp4 cat ftp://server/share/201000406/09/video58.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/09/video59.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video00.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video01.mp4
mp4box.exe day.mp4 cat ftp://server/share/201000406/10/video02.mp4
greetz
Snow
gibts eigentlich keine bessere Variante, Überwachungsvideos oder ähnliches zu übertragen??