Tak dalo se předpokládat že se nikdo neozve nezbylo nic jiného než internet nápověda k příkazům a metoda pokus omyl.
No a povedlo se..v Code dávka která zjistí volnou kapacitu disku a na základě toho spustí nebo ukončí instalaci.
Kód: Vybrat vše
@echo off
chcp 1250 > nul
rem dir c: | find /I "Volnřch bajt" > Tmp.txt
for /F "tokens=5-9* delims=á " %%a in (Tmp.txt) do (
if not "%%a"=="" if "%%b"=="" set Free=0
if not "%%a"=="" if not "%%b"=="" if "%%c"=="" set Free=0
if not "%%a"=="" if not "%%b"=="" if not "%%c"=="" if "%%d"=="" set Free=%%a%
if not "%%a"=="" if not "%%b"=="" if not "%%c"=="" if not "%%d"=="" if "%%e"=="" set Free=%%a%%b
if not "%%e"=="" set Free=%%a%%b%%c
echo.
echo Na disku c: je %%a %%b %%c %%d %%e bajtu volnych
)
chcp 852 > nul
echo To je přibližně %Free% MBajtu.
echo Pro instalaci je potřeba zhruba 10 MBajtu
set /a Free=%Free%-10
echo Zbývající volná kapacita disku po instalaci činí přibližně %Free% MBajt[u]
del Tmp.txt
If %Free% GTR 0 echo Spouštím instalaci!
If %Free% LSS 1 echo STOP!
pause
Bylo třeba vypořádat se se věma zásadními problémy:
1) Příkaz DIR vypisuje volné místo v bajtech a jednotlivé řády číslovky odděluje znakem mě se vždycky mezi trojicí čísel ukazovalo znak podobný "a" . Pokud jsem ale zadal "a" jako odělovač do příkazu delims (příkaz mění odělovače ze standardní mezera tabelátor na vámi zadané a je součástí příkazu FOR) k rozdělení jednotlivých řádů číslovky do tokens "a" až "e" nedošlo tzn. měl jsem zadán chybný odělovač. Když jsem postupně zkusil takřka všechny znaky ASCII2 tabulky, napadlo mne změnit celou znakovou sadu. příkaz k výměně znakové sady je "CHCP " a znaková sada 1250 je znaková sada Windows pro střední Evropu. Chvála pánu bohu při ukládání se odělovače mezi řády v číslici změnily na prosté dlouhé "á" a konečně se mi povedlo rozložit číslo po řádech.
2)Druhý problém příkaz SET nedokáže počítat s číslem větším jak 999 999 999 bylo třeba zaokrouhlit na MBajty. Mno popral jsem se s tím tak trochu lišácky vypustil jsem z čísla posledních 6 číslic jen mi chvíli trvalo než jsem přišel na sadu podmínek (příkaz If), která to zajistí protože číslo se plní od tokenu "a" a vy vždy musíte odebrat poslední dva plné tokeny.
Pokud chcete ptejte se , když vám nebude něco jasné pokud budu vědět odpovím. Předpokládám určitou vaší znalost tvorby dávkových souborů a tak jsem se soustředil pouze na popis problémů se kterými sem se musel poprat.