

úprava dávkového souboru
Dobrý den.
Mám dávkový soubor pro zjištění velikosti zadaného souboru uvnitř dávky. Potřeboval bych to modifikovat na tvar, kdy místo %1 pro externí proměnnou tuto proměnnou soubor nastavím uvnitř dávky.
Jinak řečeno, neumím upravit výraz %~z1 na tvar pro proměnnou definovanou uvnitř dávky v SET %soubor% = c:\Windows\System32\COMMAND.COM
@echo off
if not exist %1 echo Zadany soubor %1 nebyl nalezen && goto :eofif %~z1 EQU 50648 goto :0
echo Soubor ma jinou velikost %~z1 B, nez pozadovanych 50648 B
goto :eof::
:0
echo Soubor %1 o velikosti %~z1 B byl nalezen:: DONE
Pomůžete mi s tím někdo?
Vycházím z %~z1 Expands %1 to size of file.
viz http://www.microsoft.com/resources/documentation/w indows/xp/all/proddocs/en-us/percent.mspx?mfr=true
Na první pohled vidím chybu ve VŠECH příkazech goto: má být goto o, ne goto :o. Navíc návěští eof neexistuje.
Goto :0 i goto 0 aspoň pod win7 funguje
Goto :eof je goto na konec souboru. taky to znám jen půl roku
goto.html
Řekl bych to tak: Užitečná informace. ... A jdu se stydět do roští.
se používá ve smyslu ukončení nějaké smyčky/odskoku. když jsou všechny ukončeny, teprve v tom případě je to exit.
ve smyčce potřebuju používat/modifikovat proměnnou. to u interpretu přímo nejde, ale třeba voláním subrutiny - parametr přijmu jako %1, a zpět do smyčky se vracím "goto :EOF"
nebo na různých místech batky potřebuju stejnou sekvenci použít víckrát, a zase se vrátit na původní místo. volám stejně "call :SUB", a "goto :EOF" mě vrátí do pokračování.
Pánové, k tomu původnímu zadání by se řešení nenašlo? Já zkoušel různé kombinace a bez výsledku.
vlnovková syntaxe mi nefungovala u proměnných přiřazených přes set, zkoušel jsem všechny dvě možnosti co mě napadly.
tvar s %1 takto zpracovat šel. tak jsem použil volání "call :sub", kde se předané parametry oddělené čárkou zas čtou jako %1,%2,...
Po čase nakouknu do Poradny a je tu funkční odpověď.
Chytré, díky. A ty barvičky taky potěšily.
Jde o to ze si definuju treba:
set a1=ahoj
set a2=nazdar
set a3=hello
set a4=sobota
set /a var=0
set end=500
:run
set /a var=%var%+1
set pohled=a%var%
echo %pohled%
if var==end goto exit
goto run
:exit