swidch
Goto Top

For Schleife will nicht so wie ich will

Guten Morgen.

Habe hier ein kleines Problem. Vielleicht kann mir ja einer helfen...

1. Kann mir einer sagen, wieso %diff% nie angezeigt wird?
2. Wieso ist %time% immer gleich?
3. Hat einer eine Idee wie man die Stellen der Zahl immer gleich der Stellen von %end% ist?
Wenn %end% zweistellig ist, dann 01, 02, 03, ..., 09, 10...
Wenn %end% dreistellig ist, dann 001, 002, 003,..., 009, 010, ..., 100,...


@echo off
set prefix=Dummy_
set start=1
set end=50
set size=1024

for /L %%z in (%start%,1,%end%) do (
set /A diff=%end%-%start%-%%z
echo %time% - Creating %prefix%%%z ... %diff% files left
creatfil.exe %prefix%%%z %size%
)


Danke schon mal im vorraus.
Christian

Content-Key: 68036

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

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

Member: SteinBeiser
SteinBeiser Sep 06, 2007 at 09:53:21 (UTC)
Goto Top
zu 1 und 2 probier mal das:
@echo off
setlocal enabledelayedexpansion
set prefix=Dummy_
set start=1
set end=50
set size=1024

for /L %%z in (%start%,1,%end%) do (
set /A diff=!end!-!start!-%%z
echo !time! - Creating !prefix!%%z ... !diff! files left
echo !prefix!%%z !size!
)

die zeit ändert sich dabei auch nur wenn rechner zu schnell ist er halt durch
bevor sich die zeit in echt ändert.
Member: bastla
bastla Sep 06, 2007 at 10:08:35 (UTC)
Goto Top
Hallo swidch und SteinBeiser!

Für 1. und 2. kann ich mich im Prinzip (delayedexpansion für %start%, %end% und %prefix% ist nicht erforderlich, da sich die Werte in der Schleife nicht ändern) nur anschließen, zusammen mit 3. sähe das dann etwa so aus:
@echo off & setlocal enabledelayedexpansion
set prefix=Dummy_
set start=1
set end=50
set size=1024

set /a Offset=1
set /a P=0
set /a T=%end%
:Loop
set /a T=%T%/10
set /a P+=1
set /a Offset*=10
if %T% gtr 0 goto :Loop

for /L %%z in (%start%,1,%end%) do (
	set /A diff=%Offset%+%end%-%start%-%%z + 1
	echo !time! - Creating %prefix%%%z ... !diff:~-%P%! files left
	creatfil.exe %prefix%%%z %size%
)

Grüße
bastla
Member: SteinBeiser
SteinBeiser Sep 06, 2007 at 10:22:14 (UTC)
Goto Top
@bastla
war ja nur damits einheitlicher ist.
ich glaube aber das die stellenanzahl auf
%prefix%%%z bezogen ist damit beim createfil einheitliche dateinamen herauskommen.
Member: bastla
bastla Sep 06, 2007 at 10:33:05 (UTC)
Goto Top
@SteinBeiser
ich glaube aber das die stellenanzahl auf %prefix%%%z bezogen ist damit beim createfil einheitliche dateinamen herauskommen.
Damit hast Du sicher Recht. Dann müsste es so aussehen:
for /L %%z in (%start%,1,%end%) do (
	set /a diff=%end%-%start%-%%z + 1
	set /a Nr=%Offset%+%%z
	set "Name=%prefix%!Nr:~-%P%!"  
	echo !time! - Creating !Name! ... !diff! files left
	creatfil.exe !Name! %size%
)

Grüße
bastla