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-ID: 68036

Url: https://administrator.de/forum/for-schleife-will-nicht-so-wie-ich-will-68036.html

Ausgedruckt am: 08.04.2025 um 17:04 Uhr

SteinBeiser
SteinBeiser 06.09.2007 um 11:53:21 Uhr
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.
bastla
bastla 06.09.2007 um 12:08:35 Uhr
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
SteinBeiser
SteinBeiser 06.09.2007 um 12:22:14 Uhr
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.
bastla
bastla 06.09.2007 um 12:33:05 Uhr
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