dipps

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
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
leider funktioiert das nicht
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 140027

Url: https://administrator.de/forum/2-forschleifen-hintereinander-140027.html

Ausgedruckt am: 21.05.2025 um 09:05 Uhr

Snowman25
Snowman25 07.04.2010 um 11:14:58 Uhr
Goto Top
Hallo @Dipps,

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
Biber
Biber 07.04.2010 um 11:20:07 Uhr
Goto Top
Moin Dipps,

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
Dipps
Dipps 07.04.2010 um 11:32:37 Uhr
Goto Top
als ausgabe kommt immer nur
" - cat ftp://server/share/201000406/18/video59.mp4"  
sonst sieht es ja schon gut aus
Snowman25
Snowman25 07.04.2010 um 11:39:52 Uhr
Goto Top
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
		)
	)
)
so funktionierts bei mir
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
Dipps
Dipps 07.04.2010 um 12:57:56 Uhr
Goto Top
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?
Snowman25
Snowman25 07.04.2010 um 13:05:16 Uhr
Goto Top
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?

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 
		)
	) 
)
Dipps
Dipps 07.04.2010 um 13:37:53 Uhr
Goto Top
nee ich meinte wenn bei %%i=6 ist schreibt er jetzt ..../6/..... doch er soll ..../06/.... schreiben
Snowman25
Snowman25 07.04.2010 um 13:46:13 Uhr
Goto Top
ach das sollte dein eigenartiges Konstrukt im Startpost sein...
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
passt so?
Dipps
Dipps 07.04.2010 um 14:51:03 Uhr
Goto Top
fast. und %%j auch noch aber das hatte ich vorhin schon angepasst
das heisst

%%i < 10 = 0und %%i
%%j < 10 = 0und %%j

so das .../06/video03.mp4 auch möglich sein soll.
Snowman25
Snowman25 07.04.2010 um 15:00:32 Uhr
Goto Top
so, jetzt aber endgültig:
@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??
Dipps
Dipps 07.04.2010 um 15:43:50 Uhr
Goto Top
Vielen Dank so klappt es super.
Danke Danke