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-Key: 70395

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

Printed on: April 20, 2024 at 15:04 o'clock

Member: bastla
bastla Oct 08, 2007 at 15:07:34 (UTC)
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
Member: Biber
Biber Oct 08, 2007 at 17:37:26 (UTC)
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
Member: cronossphere
cronossphere Oct 08, 2007 at 21:16:32 (UTC)
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