Zdar,
potřeboval jsem nakopírovat soubor tak, aby název kopií obsahoval pořadové číslo a to mělo vždy 5 míst.
Kdybych netrval na stejné délce čísla, bylo by to triviální, soubor např. kopiruj.bat by obsahoval:
FOR /L %%i IN (1,1,200) DO (
copy logo00000.bmp logo00%%i.bmp
)
Abych měl v názvu kopie vždy 5timístné číslo, dobral jsem se až k tomuto:
@SETLOCAL ENABLEDELAYEDEXPANSION
@FOR /L %%i IN (1,1,200) DO (
@set var=0000%%i
@set var=!var:~-5!
@echo copy logo00000.bmp logo!var!.bmp
@copy logo00000.bmp logo!var!.bmp
)
@ENDLOCAL
Sice to funguje, ale nelíbí se mi to. I když jsem pomocí @ zabránil vypisování příkazů, stejně se alespoň odřádkuje, a vypsání závorek nejde zabránit. Kdybych si nevypsal pomocí echo příkaz, tak ho ani neuvidím a nebudu vědět, co se právě děje.
Nejde to napsat nějak jednodušeji / elegantněji? Možná si napsat vlatní cyklus a nepoužívat FOR? Problém cyklu je v tom, že uvnitř nejde měnit proměnnou, respektive ji znovu použít, pokud se nedá ENABLEDELAYEDEXPANSION, a i pak jsem měl problém umístit správně ty vykřičníky a i pak se to chová neobvykle, jak jsem popsal výše...