» Poradna » Programy

Bat příkaz: zjistit velikost souboru

 |   |  Microsoft Windows 7 Chrome 78.0.3904.97

Prosím o radu s tímto příkladem.Mám soubor hlavnifotka.tif, u něho chci zjistit jeho velikost. Pokud je jeho velikost větší než 1GB, chci aby se dávka ukončila. Pokud je hlavnifotka.tif menší než 1 GB, chci aby proběhla dávka A01.Chybu mám asi někde v té podmínce, protože i když hlavnifotka.tif má více než 1 GB, příkaz skočí na A01, dále na A02, A03, přikopíruje vše, co přikopírovat má... ale je vetší než 1 GB a to nechci.Chci, aby po překročení 1 GB skočil hned na konec.Prosím o radu, jsem úplný začátečník. Děkuji.setlocalset file=”r:\hlavnifotka.tif”set maxbytesize=1073741824FOR %%A IN (r:\hlavnifotka.tif) DO SET FileSize=%%~zAIF %FileSize% GTR %maxbytesize% (goto konec) ELSE (goto A01):A01if exist c:\prikopirovat01.tif call davka01.exe c:\prikopirovat01.tifif exist c:\prikopirovat01.tif call davka02.exe r:\hlavnifotka.tifif exist c:\prikopirovat01.tif del c:\prikopirovat01.tifsetlocalset file=”r:\hlavnifotka.tif”set maxbytesize=1073741824FOR %%A IN (r:\hlavnifotka.tif) DO SET FileSize=%%~zAIF %FileSize% GTR %maxbytesize% (goto konec) ELSE (goto A02):A02if exist c:\prikopirovat02.tif call davka01.exe c:\prikopirovat02.tifif exist c:\prikopirovat02.tif call davka02.exe r:\hlavnifotka.tifif exist c:\prikopirovat02.tif del c:\prikopirovat02.tifsetlocalset file=”r:\hlavnifotka.tif”set maxbytesize=1073741824FOR %%A IN (r:\hlavnifotka.tif) DO SET FileSize=%%~zAIF %FileSize% GTR %maxbytesize% (goto konec) ELSE (goto A03):A03if exist c:\prikopirovat03.tif call davka01.exe c:\prikopirovat03.tifif exist c:\prikopirovat03.tif call davka02.exe r:\hlavnifotka.tifif Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

avatar
 | Microsoft Windows 10 IE 11.0

Preteceni max. velikosti cisla v cmd.exeMP

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

jeste dukaz:>SET FileSize=3807252480>set /a FileSize=%filesize%-1Invalid number. Numbers are limited to 32-bits of precision.cmd.exe je stary a omezeny. Na spoustu veci staci. Na tuto ne :/MP

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 18.18362

??? 2 na 32 je něco přes 2000000000. S tím 1 GB to funguje

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

aha, testnul jsem na prvnim trosku vetsim souboru a padlo mi to, dal jsem neresilMP

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

bacha na zavorky u podmineneho prikazu, DURAZNE doporucuji if condition ( neco neco2) else (neco3neco4)taky ne?MP

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 78.0.3904.97

Velice děkuji za rychlé odpovědi.Potřebuji to do práce jako dílčí část většího úkolu, mohu použít jen příkazový řádek.Jde mi o to, aby hlavnifotka.tif nepřesáhla 4 GB (to je maximální velikost, kterou photoshop uloží bez dotázání). Lépe ale, když nepřekročí 1 GB, pro rychlejší práci. Dávka poběží na tisících souborech, je lepší proto otevírat jen gigové soubory než čtyřgigové.Jaká je tedy maximální velikost, kterou ještě cmd.exe zvládne (jaké maximální číslo můžu doplnit do podmínky)?Vyzkouším to s tím 1GB, zatím jsem zkoušela jen 4GB.Děkuji.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 18.18362

Největší je 2 na 32, tedy 2 G ještě projde.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 78.0.3904.97

Funguje to. Opravdu vytváří soubory jen něco málo přes 2 GB, zbytek přeskočí a jde na další soubor.Děkuji mnohokrát za rychlé odpovědi. Na Živě to opravdu žije :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

Doplnim, ze se jedna o signed integer, takze ne 2^32, ale 2^31 !!!MP

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 18.18362

Zkoušel jsem ten příklad s 2 000 000 000 a funguje ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

2^31=2147483648set a=2147483648set /a a=%a%+1resp jeste lepe (preteceni do minusu)set a=2147483647set /a a=%a%+1MP

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 18.18362

Teď mi to došlo: samo, že 2 na 31 ... tedy něco přes těch 2 000 000 000 (to bylo podstatné).

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 IE 11.0

jak jsem psal - SIGNED int :)MP

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 70.0
 | Microsoft Windows 10 Chrome 78.0.3904.97

Co si vzpomínám, měl jsem problémy v dávkových souborech s příkazy typu "goto konec" a podobně.Fungovaly mi jenom skoky na čísla, například "goto 10".

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 18.18362

Nepleteš si to s Fortranem ???

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Goto, Move, Překročení