dipps
Goto Top

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

Content-Key: 140027

Url: https://administrator.de/contentid/140027

Printed on: April 19, 2024 at 19:04 o'clock

Member: Snowman25
Snowman25 Apr 07, 2010 at 09:14:58 (UTC)
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
Member: Biber
Biber Apr 07, 2010 at 09:20:07 (UTC)
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
Member: Dipps
Dipps Apr 07, 2010 at 09:32:37 (UTC)
Goto Top
als ausgabe kommt immer nur
" - cat ftp://server/share/201000406/18/video59.mp4"  
sonst sieht es ja schon gut aus
Member: Snowman25
Snowman25 Apr 07, 2010 at 09:39:52 (UTC)
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
Member: Dipps
Dipps Apr 07, 2010 at 10:57:56 (UTC)
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?
Member: Snowman25
Snowman25 Apr 07, 2010 at 11:05:16 (UTC)
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 
		)
	) 
)
Member: Dipps
Dipps Apr 07, 2010 at 11:37:53 (UTC)
Goto Top
nee ich meinte wenn bei %%i=6 ist schreibt er jetzt ..../6/..... doch er soll ..../06/.... schreiben
Member: Snowman25
Snowman25 Apr 07, 2010 at 11:46:13 (UTC)
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?
Member: Dipps
Dipps Apr 07, 2010 at 12:51:03 (UTC)
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.
Member: Snowman25
Snowman25 Apr 07, 2010 at 13:00:32 (UTC)
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??
Member: Dipps
Dipps Apr 07, 2010 at 13:43:50 (UTC)
Goto Top
Vielen Dank so klappt es super.
Danke Danke