cronossphere
Goto Top

Batch - random in For-Schleife

Hallo,

ich möchte unter Windows XP via Batch beliebig viele Dummy Dateien erstellen lassen. Dazu verwende ich folgende Zeile:

for /L %%i IN (1 1 %1%) do fsutil file createnew %%i.txt %random%

Die Anzahl der der Dateien wird dem Skript übergeben und steht somit in %1%. Das Ganze funktioniert soweit, nur werden alle Dateien gleich groß. Es sieht aus, als ob %random% nur einmal "gelesen" wird. Gibts da eine möglichkeit dieses Verhalten zu umgehen?

Gruß
Andreas

Content-ID: 70395

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

Ausgedruckt am: 26.11.2024 um 13:11 Uhr

bastla
bastla 08.10.2007 um 17:07:34 Uhr
Goto Top
Hallo cronossphere!

Versuch es so:
@echo off & setlocal enabledelayedexpansion
for /L %%i IN (1 1 %1) do fsutil file createnew %%i.txt !random!

Grüße
bastla
Biber
Biber 08.10.2007 um 19:37:26 Uhr
Goto Top
...und für die Konservativen, die dieses neumodische DelayedExpansion-Krams nicht wollen:

(=19:34:46  D:\temp=)
>find "." "Y:\eigene Dateien\NotDelayedRandom.bat"  

---------- Y:\EIGENE DATEIEN\NOTDELAYEDRANDOM.BAT
@for /L %%i IN (1 1 %1) do @call echo fsutil file createnew %%i.txt %%random%%

(=19:35:03  D:\temp=)
>"Y:\eigene Dateien\NotDelayedRandom" 3  
fsutil file createnew 1.txt 28730
fsutil file createnew 2.txt 26125
fsutil file createnew 3.txt 25088

(=19:35:24  D:\temp=)
>"Y:\eigene Dateien\NotDelayedRandom" 7  
fsutil file createnew 1.txt 6865
fsutil file createnew 2.txt 23439
fsutil file createnew 3.txt 17461
fsutil file createnew 4.txt 1109
fsutil file createnew 5.txt 9644
fsutil file createnew 6.txt 27826
fsutil file createnew 7.txt 26090

...geht auch ohne... face-wink

Grüße
Biber
cronossphere
cronossphere 08.10.2007 um 23:16:32 Uhr
Goto Top
Vielen Dank euch beiden.

"enabledelayedexpansion" hatte ich schonmal gehört, habs aber nicht mehr aus dem Kopf zusammengebracht. Die Lösung im dem Call ist im nachhinein auch logisch...

Dankeschön nochmal face-smile