Dávkový soubor pro kopírování - problém s proměnnou v cyklu FOR – Příkazový řádek – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dávkový soubor pro kopírování - problém s proměnnou v cyklu FOR – Příkazový řádek – Fórum – Programujte.comDávkový soubor pro kopírování - problém s proměnnou v cyklu FOR – Příkazový řádek – Fórum – Programujte.com

 

bflmpsvz0
Duch
8. 2. 2013   #1
-
0
-

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...

Nahlásit jako SPAM
IP: 195.113.228.–
JoDiK
~ Anonymní uživatel
987 příspěvků
8. 2. 2013   #2
-
0
-

#1 bflmpsvz
Nevím teda co přesně chceš nebo ne, ale vypnutí výpisu se odjakživa dělá jen jednou na začátku @echo off

a zahazování informačních výpisů přesměrováním na zařízení nul.

@echo off
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>nul
)
ENDLOCAL
Nahlásit jako SPAM
IP: 88.103.233.–
bflmpsvz0
Duch
12. 2. 2013   #3
-
0
-

#2 JoDiK

No jo. nepíšu dávky často, tohle mi nějak uniklo. Teď to skoro nemá chybu - přesměrování do nul jsem vyhodil, abych viděl odezvu že kopírování proběhlo, a jsem s tím spokojený. Akorát se mi nelíbí ten nezvyk, že nevidím samotný příkaz a musím si ho echovat, a při každé úpravě kopírovat ještě vykonávaný příkaz do příkazu echo, abych viděl co se v průběhu vykonávání skriptu děje.
 

Nahlásit jako SPAM
IP: 195.113.228.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý